哪家运营商是正确的我的命令

问题描述:

我与SQL Server 2008工作,我用这个命令:哪家运营商是正确的我的命令

SELECT Min(id), 
     [idfromindex] 
FROM ordersview 
WHERE [idfromindex] IN(SELECT DISTINCT [idfromindex] 
         FROM ordersview 
         WHERE isobserve = 'True' 
           AND ispay = 'True' 
           AND orderdate >= '1390/09/01' 
           AND orderdate <= '1391/09/27') 
GROUP BY [idfromindex] 

但如果恰好与orderdate='1390/09/01'orderdate='1391/09/27'值的记录也不会告诉他们,那只能说明结果比他们更大,更低,但如果它存在,我也想展示同样的结果。

orderDate存储类型为日期

+3

不“订购日期”有时间分量呢? – 2013-02-10 20:47:50

会不会改变的条件是>= '1390/09/01'< '1391/09/28'更有意义?这样,如果日期被注册为1390/09/01 23:59'. Date conditions tend to assume the exact time is 00:00`,您可以删除时间组件。当然,这取决于你的列数据类型是什么(日期时间与日期)。

+1

其实,'1390/08/31'应该是> ='1390/09/01'。记录时间戳'1390/08/31 xx:xx'应排除在外。 – 2013-02-10 20:55:22

+0

你是对的,我迷惑了自己。我改变了我的答案,以避免混淆。 – Deif 2013-02-11 12:09:09

DATETIME数据类型包含日期和时间信息

如果你只提供了日期部分,SQL设置时间部分作为一天的开始,这已是半夜...

所以上添加+1右或添加-1左将求解你的问题..

SELECT DISTINCT [idfromindex] 
         FROM ordersview 
         WHERE isobserve = 'True' 
           AND ispay = 'True' 
           AND orderdate >= dateadd(day,1,'1390/09/01') 
           AND orderdate <= dateadd(day,1,'1391/09/27')