-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 タイプは Date です

4

2 に答える 2

2

条件を存在に変更して、より理にかなっていません>= '1390/09/01'< '1391/09/28'? 1390/09/01 23:59'. Date conditions tend to assume the exact time isそうすることで、日付が00:00として登録されている場合に時間コンポーネントを削除できます。もちろん、列のデータ型 (日時と日付) によって異なります。

于 2013-02-10T20:50:24.617 に答える
1

DATETIME データ型には、日付と時刻の両方の情報が含まれます

日付部分のみを指定すると、SQL は時間部分を 1 日の始まり、つまり真夜中として設定します...

したがって、右に+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')
于 2013-02-10T20:56:49.153 に答える