2013-02-10 52 views
-1

我與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

回答

2

會不會改變的條件是>= '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

1

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')