日期:2014-05-18  浏览次数:20561 次

SQL 中BETWEEN AND的搜索范围
今天发现系统里边有一个bug,搜索日期在 BETWEEN '2011-09-01' AND '2011-09-30 23:59:59.999' 的内容,结果居然把2011-10-01的也包括进来了,无比纳闷中。
一直觉得between and 的作用就是 >= <= ,难道是搜索时四舍五入了?因为改成BETWEEN '2011-09-01' AND '2011-09-30 23:59:59.000'就不会出现2011-10-01了,希望大侠们来解释下呀

------解决方案--------------------
你这样子写第一个就改成 2011-09-01 00:00:00.000 试试。
------解决方案--------------------
'2011-09-30 23:59:59.997' 试试。。datetime精确到 1/300秒
------解决方案--------------------
'2011-09-30 23:59:59.999' 
改成
'2011-09-30 23:59:59.997'
看看
------解决方案--------------------
select cast('2011-09-30 23:59:59.997' as datetime) 
select cast('2011-09-30 23:59:59.999' as datetime)
------解决方案--------------------
如楼上所示
SQL code
select cast('2011-09-30 23:59:59.997' as datetime)  
select cast('2011-09-30 23:59:59.999' as datetime)

------解决方案--------------------
确保字段类型是时间类型,或者比较的时候转成时间类型即可