mybatis中时间类型的⽐较onholiday
今天测试新功能,发现程序的语句正常执⾏但不报错也⽆返回值,把控制台打印的sql拷贝到mysql中直接执⾏却有数据,应该是mybatis和mysql解释语句的⽅式有所不同导致,最后改了写法就可以了。
不推荐的写法【虽然都是时间字段,传值也是时间类型也不推荐】:
lect
<include refid="Ba_Column_List"/>
from wf_ext_task_timing where timing_status =1
<![CDATA[and task_due_time <=#{dueTime,jdbcType=TIMESTAMP} ]]>
and task_due_time is not null
完美写法:
lect
<include refid="Ba_Column_List"/>
湖北学位英语from wf_ext_task_timing where timing_status =1
<![CDATA[AND DATE_FORMAT(task_hasten_time,'%Y-%m-%d %H:%i:%s')<= DATE_FORMAT(#{hastenTime,jdbcType=TIMESTAMP},'%Y-%m-%d %H:%i:%s') ]]>
and task_hasten_time is not nullmemorycard
注意:
1.这个只适⽤于字段类型为时间类型,⽐如date,datetime,timestamp等,如果是varchar类型的,直接⽐较⼤⼩即可。
2.时间字段的格式化根据⾃⼰业务,%Y-%m-%d %H:%i:%s只是⼀个举例,末尾附上速查表格。
<_date和to_char是oracle的函数,date_format和str_date_format是mysql的,别弄错了。
格式描述
janna%a缩写星期名
%b缩写⽉名
prize
%c⽉,数值
%D带有英⽂前缀的⽉中的天
%d⽉的天,数值(00-31)
%e⽉的天,数值(0-31)
%f微秒
委托翻译%H⼩时 (00-23)
apc是什么
%h⼩时 (01-12)
%I⼩时 (01-12)
%i分钟,数值(00-59)
bigot%j年的天 (001-366)
%k⼩时 (0-23)
%l⼩时 (1-12)
%M⽉名
%m⽉,数值(00-12)
%p AM 或 PM
%r时间,12-⼩时(hh:mm:ss AM 或 PM)
%S秒(00-59)
%s秒(00-59)
%s秒(00-59)
格式描述
leave the door open%T时间, 24-⼩时 (hh:mm:ss)
%U周 (00-53) 星期⽇是⼀周的第⼀天confidential
%u周 (00-53) 星期⼀是⼀周的第⼀天
%V周 (01-53) 星期⽇是⼀周的第⼀天,与 %X 使⽤%v周 (01-53) 星期⼀是⼀周的第⼀天,与 %x 使⽤%W星期名
%w周的天 (0=星期⽇, 6=星期六)
%X年,其中的星期⽇是周的第⼀天,4 位,与 %V 使⽤%x年,其中的星期⼀是周的第⼀天,4 位,与 %v 使⽤%Y年,4 位
%y年,2 位