在开发中,会经常碰到要进行以日期为条件进行查询的情况,可以用以下方法:
dm.getScrollData(UserOrder.class," TO_DAYS(?)- TO_DAYS(o.createTime)=0 and o.isBook = ? and o.status = ? and o.isAdd = ? ......
mysql
TO_DAYS() 该方法返回时间的天数 用该方法就可以 查出 相差多少天
sql
datediff(day,o.productDate,?)= 0
和mysql差不多~都是同样的兜里,不过参数day,可以换成month
下面附上一个经典例子(sqlserver):
现有一张表名为 "Record "时间列名为 Times 类型是 "DATETIME 2012-10-1 12:00:00" 现在查询开始日期至结束日期内的 周一至周五,早上八点半至中午十二点,然后下午十二点半至晚上五点的记录, 比如我查询 2010-1-1 00:00:00 至 2011-1-1 00:00:00 日期内 所有周一至周五 ,早上八点半至中午十二点,然后下午十二点半至晚上五点的记录
这样:
SELECT * FROM Record WHERE convert(varchar(10),Times,120) BETWEEN '2010-01-01' and '2010-12-31' //时间在2010-01-01 2010-12-31 日期段 AND DatePart('w',Times) BETWEEN 2 AND 6 //时间在星期一到星期五 AND ( //时间在8:30-12:00 或者 12:30-17:00 CONVERT(varchar(8), Times, 8) BETWEEN '08:30:00' and '12:00:00' or CONVERT(varchar(8), Times, 8) BETWEEN '12:30:00' and '17:00:00' )