假设查询一段时间是2012-03-05的,我以前用如下语句:
where time between '2012-03-05 00:00:00' and '2012-03-05 23:59:59'
但后来总是发生错误。
仔细研究后发现,这句话不仅仅将3月5日当天的数据,还将time='2012-03-06 00:00:00'的数据带出来了。
也就是说,sql server2008认为2012-03-06 00:00:00和2012-03-05 23:59:59是等价的。
擦!
所以我后来全部改成了如下语句:
time>='2012-03-05 00:00:00' and time<'2012-03-05 23:59:59'
即左闭右开区间。
而between and 是双闭区间。危险啊!