5

7 日未満のすべてのレコード[Orders]を選択したいと考えています。[Submissiondate]

私は完全に困惑しています。これは私が実行しているクエリです:

SELECT * FROM [Orders] WHERE ([SubmissionDate] < @SubmissionDate)

うまくいきません。

4

4 に答える 4

5

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
于 2012-06-30T22:29:38.587 に答える
1

@SubmissionDateSQL パラメータが現在の日付 (および時刻) であると仮定します。[Orders] 過去 7 日以内に送信されたものを返す次のクエリを使用できます。

SELECT * FROM [Orders] WHERE ([SubmissionDate] >= DATEADD(DD, -7, DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))))

このソリューションに関する 2 つの重要な注意事項:

  1. 時間「部分」は @SubmissionDate から削除されています。
  2. 「日付まで」の制限がないため、送信された「今日」が含まれ[Orders]ます (クエリが実行されるまで)。

次のコードは、日付と時刻の日付「部分」のみを取得するためのものです (この他のSO スレッドから抽出)。

DATEADD(dd, 0, DATEDIFF(dd, 0, @SubmissionDate))
于 2012-07-01T11:39:44.543 に答える
0

このDATEDIFFを試すこともできます

SELECT * FROM [Orders] WHERE  datediff(d,SubmissionDate,GETDATE()) > 7

ここで、GetDate() は今日の日付で、d差は日数です

select datediff(d,'2012/06/23',GETDATE())

7 日前なので 7 を返す必要があります

于 2012-06-30T19:02:51.600 に答える