日付/時刻の作成
日付と時刻に関するこのシリーズでは、MySQLの5つの時間データタイプと、その多くの日付/時刻指向関数のいくつかについて説明しました。この記事では、MySQLで日付と時刻を作成するいくつかの方法について説明します。
MAKEDATE()関数の使用
パート3では、MAKEDATE()関数について簡単に説明しました。これはyearとdayofyearを受け取り、結果のDate値を返します。例えば、MAKEDATE(2021, 200)は"2021-07-19"の日付を返します。この機能の欠点はすぐに明らかになるはずです。年、月、日がある場合、dayofyearを決定するには計算が必要です。その場合、MAKEDATE()とDATE_ADD()を組み合わせてDATEを作成できます。日が1のMAKEDATE()は、指定された年の最初の日のDATEを提供し、次にDATE_ADD()を使用して月と日を追加できます。年と月のみを設定する例を次に示します。

このSELECTステートメントには、日も含まれます。

MAKETIME()関数
TIMEのみを作成する場合、MAKETIME()は、時、分、および秒の引数から計算された時間値を返します。

3番目の引数は、ミリ秒の小数部分を持つことができます。

STR_TO_DATE()関数
DATE、TIME、またはDATETIMEを作成するための別の選択肢は、STR_TO_DATE()関数を使用することです。これは、日付文字列とフォーマット文字列を受け取り、次を返します。
- 文字列に日付のみが含まれている場合はDATE値
- 文字列に時間のみが含まれている場合はTIME値
- フォーマット文字列に日付と時刻の両方の部分が含まれている場合はDATETIME値
さらに、strから抽出された日付、時刻、または日時の値が無効な場合、STR_TO_DATE()はNULLを返し、警告を生成します。
いくつかの例
Navicat for MySQL 16でのDATEは次のとおりです。

スキャンはstrの先頭から開始され、フォーマットが一致しないことが判明した場合は失敗します。一方、strの最後にある余分な文字は無視されます。

指定されていない日付または時刻の部分の値は0であるため、日付/時刻文字列で値が不完全に指定されていると、一部または全ての部分が0に設定された結果が生成されます。

フォーマットで使用できる指定子の完全なリストについては、公式のMySQLドキュメントのDATE_FORMAT()関数の説明を参照してください。
MAKEDATE()、MAKETIME()、およびSTR_TO_DATE()関数の組み合わせ
2つの別々のDATE値とTIME値がある場合、MAKEDATE()とMAKETIME()の結果を連結し、結合された文字列をSTR_TO_DATE()に渡すことにより、DATETIME値を取得できます。それは大変な作業のように聞こえるかもしれませんが、実際には非常に簡単です。

結論
MySQLでの日付と時刻の操作シリーズの今回の記事では、MySQLでその特殊な日付と時刻関数のいくつかを使用して日付と時刻を作成するいくつかの方法について説明しました。次回の記事では、SELECTクエリで時間データを使用する方法について説明します。