0

日付(MMDDYYYY形式)を含むイベント情報を含むデータベースがあります。特定の時間枠内にある行のみを取得するSQLServerステートメントを作成することは可能ですか?

この疑似ステートメントのようなもの:

SELECT * FROM events WHERE [current_date minus date <= 31] ORDER BY date ASC

ここdateで、はSQL Server行の日付であり、current_dateは今日の日付です。日31なので、基本的には1ヶ月です。

一般的なステートメント(:を読んでください)の後でデータを簡単に処理できますがSELECT * FROM events ORDER BY date ASC、これが可能かどうかを知るのは「クール」です(私が何か新しいことを学ぶように:P)。

4

8 に答える 8

4

SELECT*FROMイベントWHEREdate>getdate()-31 ORDER BY date ASC

于 2009-02-09T21:30:09.410 に答える
2

DateDiffを使用します。

SELECT *FROMイベントWHEREDATEDIFF(day、date、getdate())<31 ORDER BY date ASC

http://msdn.microsoft.com/en-us/library/ms189794.aspx

于 2009-02-09T21:29:47.260 に答える
2
DECLARE @start_date datetime
SET @start_date = DATEADD(day, -31, getdate())
SELECT * FROM events WHERE date BETWEEN @start_date AND getdate()
于 2009-02-09T21:33:14.507 に答える
1

最高のパフォーマンスを得るには、式で関数を使用しないでください。最初に(クライアントまたはストアドプロシージャで)しきい値の日付を計算してから、

SELECT ... WHERE[date]>{ここにしきい値を設定}

于 2009-02-09T21:33:30.760 に答える
0

DateDiffとGetDate()はあなたを整理する必要があります。

例:

SELECT * FROM events WHERE DATEDIFF(day, date, GETDATE()) <= 31 ORDER BY date ASC
于 2009-02-09T21:28:11.117 に答える
0

おそらくこのDATEDIFF関数を使用できます。

ああ、忍者は私がナンセンスを話していないことを確認するためにそれを調べている間!:)

于 2009-02-09T21:31:12.887 に答える
0

また:

選択する *
FROMイベント
WHERE current_date BETWEEN dateadd(day、-31、getdate())AND getdate()
注文日ASC

本当にBETWEENは忌まわしいですが

于 2009-02-09T21:31:58.720 に答える
0

GetDate()を使用して、現在の日付を返します。

日単位で加算または減算します。

例は次のとおりです。

SELECT *
FROM MY_TABLE T
WHERE T.SOME_DATE BETWEEN (GetDate()-31) AND GetDate()
于 2009-02-09T21:32:00.843 に答える