年・月・日 INT 型から日付 DATE 型 を生成する - DATEFROMPARTS
年・月・日 INT 型から日付 DATE 型 を生成する
ここでは INT 型の年・月・日 から DATE 型の日付を生成する方法をご紹介します。
INT 型の年・月・日 から DATE 型の日付を生成するには、DATEFROMPARTS 関数が使えます。
DATEFROMPARTS 関数の定義は以下の通りです。
DATEFROMPARTS(year, month, day)
引数の year, month, day は INT 型の整数です。
year, month, day のどれかが NULL の時は NULL を返します。
渡された year, month, day が DATE 型に変換できない値の場合はエラーになります。
例えば、年: 2024、月: 1、日: 15 から DATE型の値を生成したい時は次のようにできます。
SELECT DATEFROMPARTS(2024, 1, 15) AS ResultDate;
[ 実行結果 ]
2024-01-15 が ResultDate として取得できました。
年: 2024、月: 1 が与えられて、それの前の年・月を取得したいような時にも DATEFROMPARTS 関数を使って、次のように取得できます。
DECLARE @CurrYear INT = 2024, @CurrMonth INT = 1; DECLARE @CurrYearMonthDate DATE = DATEFROMPARTS(@CurrYear, @CurrMonth, 1); DECLARE @PrevYearMonthDate DATE = DATEADD(mm, -1, @CurrYearMonthDate); SELECT @CurrYearMonthDate AS CurrYearMonthDate, @PrevYearMonthDate AS PrevYearMonthDate, YEAR(@PrevYearMonthDate) AS PrevYear, MONTH(@PrevYearMonthDate) AS PrevMonth;
DATEFROMPARTS 関数で @CurrYearMonthDate を生成してから、DATEADD で @PrevYearMonthDate にマイナス 1 ヶ月した日付を取得しています。
YEAR と MONTH 関数を使って @PrevYearMonthDate から前月の年と月を取得しています。
これを実行すると以下のようになり、前月の 年: 2023、月: 12 が取得できていますね。
[ 実行結果 ]
以上、DATEFROMPARTS 関数を使って、年・月・日 INT 型から日付 DATE 型 を生成する方法をご紹介しました。