日期:2014-05-17  浏览次数:20527 次

为何又是大于,又是小于的,不前后矛盾吗?
String sql="select * from Order where SDate>='2013-07-07' and ShippingDate<='2013-07-07'";


请问这是何意?为何又是大于,又是小于的,不前后矛盾吗?

------解决方案--------------------
如果是同一个字段,既大于等于 and 小于等于 应该是个时间段呀?
如果是同一个时间,直接写等于就行了.

>=7 and <=7 只有7才成立呀?
------解决方案--------------------
应该是时间类型不对,感觉应该是 SDate>='2013-07-07 00:00' and SDate<'2013-07-08 23:59 '
------解决方案--------------------
MSSQL里,datetime通常应该是像“2013-07-07 16:00:00.000”这样的格式。你提供的代码里,SDate>='2013-07-07'就表示只考虑年月日,不考虑时分秒,那么只要是比2013年7月6日23时59分59秒59毫秒大的,都满足条件;如果你不用>=,只用>,那么就是比2013年7月7日23时59分59秒59毫秒大的,前后就差了一天了。
------解决方案--------------------
引用:
一个是07号前的记录,一个是07后的记录,怎么矛盾了。

人家是and 不是or好吧。
楼主应该把整个题目说明完整,如果sdate是datetime类型,则字符串'2013-07-07'会自动加上0点的时间,变为
'2013-07-07 00:00:00.000'
------解决方案--------------------
String sql="select * from Order where SDate>='2013-07-07' and SDate<='2013-07-07'";
即为2013-07-07这天的数据,建议用下面的:
String sql="select * from Order where convert(varchar(10),SDate,120)='2013-07-07'";
------解决方案--------------------

那这么这么写的了....
SDate='2013-07-07'

------解决方案--------------------
引用:

那这么这么写的了....
SDate='2013-07-07'

是  SDate='2013-07-07 00:00:00.000'
就是完全整点的意思吧