年・月・日 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;

[ 実行結果 ]
年・月・日 INT 型から日付 DATE 型 を生成する - DATEFROMPARTS 1

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 が取得できていますね。

[ 実行結果 ]
年・月・日 INT 型から日付 DATE 型 を生成する - DATEFROMPARTS 2


以上、DATEFROMPARTS 関数を使って、年・月・日 INT 型から日付 DATE 型 を生成する方法をご紹介しました。

© 2010-2024 SQL Server 入門