7 日未満のすべてのレコード[Orders]
を選択したいと考えています。[Submissiondate]
私は完全に困惑しています。これは私が実行しているクエリです:
SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)
うまくいきません。
7 日未満のすべてのレコード[Orders]
を選択したいと考えています。[Submissiondate]
私は完全に困惑しています。これは私が実行しているクエリです:
SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)
うまくいきません。
とSubmissionDate
の間の行が必要な場合は、Transact-SQL で次のように実装します。@SubmissionDate
@SubmissionDate - 7 days
WHERE [SubmissionDate] BETWEEN DATEADD(DAY, -7, @SubmissionDate)
AND @SubmissionDate
とをBETWEEN
意味することに注意してください。厳密な不等式が必要な場合は、次のようにします。>=
<=
WHERE [SubmissionDate] > DATEADD(DAY, -7, @SubmissionDate)
AND [SubmissionDate] < @SubmissionDate
@SubmissionDate
SQL パラメータが現在の日付 (および時刻) であると仮定します。[Orders]
過去 7 日以内に送信されたものを返す次のクエリを使用できます。
SELECT * FROM [Orders] WHERE ([SubmissionDate] >= DATEADD(DD, -7, DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))))
このソリューションに関する 2 つの重要な注意事項:
[Orders]
ます (クエリが実行されるまで)。次のコードは、日付と時刻の日付「部分」のみを取得するためのものです (この他のSO スレッドから抽出)。
DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))
SELECT * FROM [Orders] WHERE datediff(d,SubmissionDate,GETDATE()) > 7
ここで、GetDate() は今日の日付で、d
差は日数です
select datediff(d,'2012/06/23',GETDATE())
7 日前なので 7 を返す必要があります