最近统计数据功能涉及到统计指定的区间的记录数量的问题,结果输入起始时间:2011-06-20 终止时间:2011-06-20用直接的Between查询不出2011-06-20的记录数
select count(id),userid from goods where createDate between '2011-06-20' and '2011-06-20' group by userid
问题出在,实际SQL Server是在查询2011-06-20 00:00:00 至 2011-06-20 00:00:00的记录,这一时间没有记录,则不返回值,好了,问题原因找到的那么开始解决问题吧
于是我们先把CreateDate的日期转换成不含分秒时的字符串然后再用between比较,代码如下:
select count(id),userid from goods where Convert(char(10),createDate,120) between '2011-06-20' and '2011-06-20' group by userid
解释一下Convert函数:
Convert是将CreateDate日期类型转换为Char类型长度是10的字符串,并且格式是120也就是:“yyyy-mm-dd hh:mm:ss”格式,因为字符长度为10自然就只有日期,没有分秒时了,然后再比较区间的值是否符合