MySQL で整数の年・月・日 から DATE 型の日付を生成する方法
ここでは、MySQL で整数の年・月・日 から、DATE 型日付の値を生成する方法をご説明します。
MySQL の STR_TO_DATE() 関数の使い方
MySQL で整数の年・月・日 から、DATE 型日付の値を生成するには、いろいろな方法があります。
ここでは、STR_TO_DATE() 関数を使った方法をご紹介します。
STR_TO_DATE() 関数は指定したフォーマットで文字列を日付型の値に変換して返す関数です。
STR_TO_DATE(文字列, フォーマット文字列)
フォーマット文字列に日付と時間が含まれている場合は DATETIME 型の値が返ります。
フォーマット文字列に日付しか含まれていない場合は DATE 型の値が返ります。
フォーマット文字列に時間しか含まれていない場合は TIME 型の値が返ります。
文字列が日付にできない場合はエラーにはならず、null を返します。
フォーマット文字列には次のようなものがあります。
MySQL Reference Manual - Date and Time Functions より
STR_TO_DATE() 関数 で整数の年・月・日 から DATE 型の日付を生成する
それでは、STR_TO_DATE() 関数を使って、年・月・日 整数から日付 DATE 型を生成してみます。
今回は 4 桁の年・月・日から日付型を生成するので、フォーマット文字列には %Y・%m・%d を使います。
例えば、年: 2024、月: 10、日: 5 から DATE 型の値を生成したい時は次のようにできます。
SET @year = 2024;
SET @month = 10;
SET @day = 5;
SELECT STR_TO_DATE(CONCAT_WS('-', @year, @month, @day), '%Y-%m-%d') AS ResultDate;
[実行結果]
まずは、CONCAT_WS() 関数を使って、@year, @month, @day を - でつなげて '2024-10-5' を生成しています。
CONCAT_WS() 関数の使い方については「MySQL の CONCAT_WS() 関数の使い方」をご覧ください。
そして、STR_TO_DATE() 関数に CONCAT_WS() 関数で生成した文字列と、それに合うフォーマット文字列 '%Y-%m-%d' を渡して、日付型の値 2024-10-05 を取得しています。
DATE() 関数 で整数の年・月・日 から DATE 型の日付を生成する
DATE() 関数を使っても、 整数の年・月・日から DATE 型の値を生成することができます。
SET @year = 2024;
SET @month = 10;
SET @day = 5;
SELECT DATE(CONCAT_WS('-', @year, @month, @day)) AS ResultDate;
[実行結果]
こちらも、CONCAT_WS() 関数を使って、@year, @month, @day を - でつなげて '2024-10-5' を生成しています。
そして、DATE() 関数に CONCAT_WS() 関数で生成した文字列を渡して、日付型の値 2024-10-05 を取得しています。
DATE() 関数も、引数が日付に変換できない値でも、エラーにはならず null が返ります。
以上、MySQL で整数の年・月・日 から DATE 型の日付を生成する方法をご説明しました。