日付の計算を行うには DATEADD 関数を使用します。
1年前・1年後の日付を取得する方法
DATEADD 関数の引数に 定数 year を指定し、加算・減算したい年数 と 日付 を渡します。1年前の日付 = DATEADD(year, -1, 日付)
1年後の日付 = DATEADD(year, 1, 日付)
--時刻あり
1年前のシステム日時 = DATEADD(year, -1, GETDATE())
1年後のシステム日時 = DATEADD(year, 1, GETDATE())
--時刻なし
1年前のシステム日付 = DATEADD(year, -1, CAST(GETDATE() as date))
1年後のシステム日付 = DATEADD(year, 1, CAST(GETDATE() as date))
- GETDATE() はシステム日時を返します。
- CAST(XXXX as date) は DateTime型 を Date型に変換し、時刻を切り捨てています。
サンプルSQL
--結果 = 2024-01-01 00:00:00.000
SELECT DATEADD(year, -1, '2025/01/01')
--結果 = 2026-01-01 00:00:00.000
SELECT DATEADD(year, 1, '2025/01/01')
月 と 日 の計算
月の計算を行うには 定数 month、日数の計算を行うには 定数 day を指定します。--月の計算
DATEADD(month, 加算・減算したい月数, 日付)
--日の計算
DATEADD(day, 加算・減算したい日数, 日付)
検証環境
- Microsoft SQL Server 2019 (RTM-CU10) (KB5001090) - 15.0.4123.1 (X64) Mar 22 2021 18:10:24 Copyright (C) 2019 Microsoft Corporation Express Edition (64-bit) on Linux (Ubuntu 20.04.2 LTS) <X64>
- Docker image: mcr.microsoft.com/mssql/server:2019-latest
- Docker Desktop 3.5.2(66501)
- Docker Engine 20.10.7
- Docker Compose 1.29.2
- Microsoft SQL Server Management Studio v18.8(15.0.18369.0)
- Microsoft Windows 10 Pro Version 21H1 OS Build 19043.1151 Experience: Windows Feature Experience Pack 120.2212.3530.0