MySQL で整数の年・月・日 から DATE 型の日付を生成する方法

ここでは、MySQL で整数の年・月・日 から、DATE 型日付の値を生成する方法をご説明します。

MySQL の STR_TO_DATE() 関数の使い方

MySQL で整数の年・月・日 から、DATE 型日付の値を生成するには、いろいろな方法があります。

ここでは、STR_TO_DATE() 関数を使った方法をご紹介します。


STR_TO_DATE() 関数は指定したフォーマットで文字列を日付型の値に変換して返す関数です。

STR_TO_DATE(文字列, フォーマット文字列)

フォーマット文字列に日付と時間が含まれている場合は DATETIME 型の値が返ります。

フォーマット文字列に日付しか含まれていない場合は DATE 型の値が返ります。

フォーマット文字列に時間しか含まれていない場合は TIME 型の値が返ります。

文字列が日付にできない場合はエラーにはならず、null を返します。


フォーマット文字列には次のようなものがあります。

MySQL で整数の年・月・日 から DATE 型の日付を生成する方法 1

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;

[実行結果]

MySQL で整数の年・月・日 から DATE 型の日付を生成する方法 2


まずは、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;

[実行結果]

MySQL で整数の年・月・日 から DATE 型の日付を生成する方法 3


こちらも、CONCAT_WS() 関数を使って、@year, @month, @day を - でつなげて '2024-10-5' を生成しています。

そして、DATE() 関数に CONCAT_WS() 関数で生成した文字列を渡して、日付型の値 2024-10-05 を取得しています。

DATE() 関数も、引数が日付に変換できない値でも、エラーにはならず null が返ります。


以上、MySQL で整数の年・月・日 から DATE 型の日付を生成する方法をご説明しました。

© 2024 MySQL 入門