不管是mysql,还是sqlserver的sql语句如果直接使用 :

create_time >= '2021-06-16' and  create_time <= '2021-06-16' 

查询的时候,都会自动补全时间,实际查询sql语句为:

 create_time >= '2021-06-16 00:00:00' and create_time <= '2021-06-16 00:00:00' 

这时,我们就查不到我们所需要的。我们怎么做呢?

  • 一种方法:自己补全时间,改造sql语句为:
 create_time >= '2021-06-16 00:00:00' and create_time <= '2021-06-16 23:59:59' 
  • 另一种办法:对时间字段进行格式化成我们所需要的,数据库不同,语句也不同,我喜欢用第二种,列出我使用过的2种数据库:
    1. mysql数据库
      	date_format(create_time,'%y%m%d') &gt;= date_format(#{beginTime},'%y%m%d')
      	AND date_format(create_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d') 
      
    2. sqlserver数据库
      	convert(varchar(10),create_time,120) &gt;= convert(varchar(10),#{beginTime},120)
      	AND convert(varchar(10),create_time,120) &lt;= convert(varchar(10),#{endTime},120)
      

更多推荐

sql语句的时间比较(时间段查询) ---- 记录