問題:
T-SQLで特定の日付の30日前の日付を取得したい。
例:
私たちのデータベースには、Computer
Id
列にデータがあります 、Name
、およびPurchaseDate
。
Id | 名前 | PurchaseDate |
---|---|---|
1 | Sony GX1000 | 2019-01-20 |
2 | Samsung LX2000 | 2019-04-15 |
3 | Dell K80 | 2019-08-30 |
各コンピュータの名前と30日前の日付を取得しましょう 購入日。
解決策:
DATEADD()関数を使用して、日付から指定された日数を減算します。
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
クエリの結果は次のとおりです。
名前 | BeforePurchaseDate |
---|---|
Sony GX1000 | 2018-12-21 |
Samsung LX2000 | 2019-03-16 |
Dell K80 | 2019-07-31 |
ディスカッション:
SQL Serverで日付または時刻を減算する場合は、DATEADD()
を使用します。 働き。 3つの引数が必要です。最初の引数は日付/時刻の単位です。この例では、日を指定します 単位。
次は、日付または時刻の単位 value 。この例では、これは -30です。 、現在の日付から30日離れているためです。マイナスは減算を意味することに注意してください 値;この記号がないと、指定された日付に追加されます。
最後の議論は、私たちが活動している日付です。これは、日付/時刻/日時列、または日付または時刻を返す任意の式にすることができます。この例では、PurchaseDate
を使用します 、date
桁。
この関数は変更された日付を返します。この例では、'Dell K80'
という名前のコンピュータのクエリ BeforePurchaseDate
に新しい日付を返します 桁。元の日付'2019-08-30'
30日前の日付に変更されます:'2018-07-31'
。
DATEADD()
を使用できます すべての日付と時刻のデータ型に対して機能します。