不管是mysql,还是sqlserver的sql语句如果直接使用 :
create_time >= '-06-16' and create_time <= '-06-16'
查询的时候,都会自动补全时间,实际查询sql语句为:
create_time >= '-06-16 00:00:00' and create_time <= '-06-16 00:00:00'
这时,我们就查不到我们所需要的。我们怎么做呢?
一种方法:自己补全时间,改造sql语句为:
create_time >= '-06-16 00:00:00' and create_time <= '-06-16 23:59:59'
另一种办法:对时间字段进行格式化成我们所需要的,数据库不同,语句也不同,我喜欢用第二种,列出我使用过的2种数据库: mysql数据库
date_format(create_time,'%y%m%d') >= date_format(#{beginTime},'%y%m%d')AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
sqlserver数据库
convert(varchar(10),create_time,120) >= convert(varchar(10),#{beginTime},120)AND convert(varchar(10),create_time,120) <= convert(varchar(10),#{endTime},120)