MySQL で文字列を日付形式に変換する
この記事では、DATE
として機能する文字列型の値を DATE
型の値に変換するためのさまざまな関数について説明します。また、MySQL の STR_TO_DATE()
、CONVERT()
、および CAST()
関数を使用して、いくつかのサンプルコードで練習します。
MySQL で文字列を日付形式に変換する
MySQL で文字列を DATE
形式に変換する次の方法を学習します。
MySQL STR_TO_DATE()
関数
この関数は、str
(文字列)を DATE
値に変換します。DATE
の形式は、文字列の形式に従います。たとえば、MM/DD/YYYY
を文字列型から DATE
型に変換すると、DATE
も MM/DD/YYYY
形式になります。
STR_TO_DATE()
関数は、入力と文字列形式に基づいて、DATE
、DATETIME
、または TIME
の値を返すことができます。以下の例を参照して、出力と比較してください。
SELECT STR_TO_DATE('2021-08-23', '%Y-%m-%d');
出力:
フォーマットを変更するとどうなりますか?ダッシュ
をコンマ
に置き換えましょう。
SELECT STR_TO_DATE('2021-08-23', '%Y,%m,%d');
出力:
上記の出力を参照してください。NULL
が返されました。フォーマットのみを YYYY-MM-DD
から DD-MM-YYYY
に変更しましょう。
SELECT STR_TO_DATE('2021-08-23', '%d-%m-%Y');
出力:
ほら、また NULL
を返しました。つまり、入力文字列と同じ DATE
形式が必要です。TIME
もあるとどうなりますか?次のコマンドを実行してみましょう。
SELECT STR_TO_DATE('2021-08-23 10:12:23', '%Y-%m-%d %T');
出力:
STR_TO_DATE()
関数はテキストを無視し、DATE
のみを出力します。次の例を参照してください。
SELECT STR_TO_DATE('2021-08-23 some other string', '%Y-%m-%d') as Date;
出力:
年を抽出することもできます。年を抽出すると、日と月がゼロに設定されます。次のコードと出力を参照してください。
SELECT STR_TO_DATE('2021-08-23', '%Y') as Year; #get year
出力:
MySQL CONVERT()
関数
変換
関数は、指定された値を指定された文字セットまたはデータ型に変換できます。データ型の詳細はこちらで確認できます。
SELECT CONVERT("2021-08-19", DATE); #convert to DATE
SELECT CONVERT("2021-08-19", DATETIME); #convert to DATETIME
SELECT CONVERT("2021-08-19", TIME); #convert to TIME
出力:
MySQL CAST()
関数
この関数は、任意のタイプ(文字列、整数、またはその他のもの)の入力を任意の指定されたデータ型に変換します。パラメータ値の詳細はこちらで確認できます。
SELECT CAST("2021-08-29" AS DATE) as date; #convert to date type
SELECT CAST("2021-08-29 11:12:45" AS DATETIME) as datetime; #convert to datetime type
SELECT CAST("11:12:45" AS TIME) as time; #convert to time type
出力:
まとめ
プロジェクトの要件に従って、文字列値を DATE
、TIME
、および DATETIME
に変換する方法は複数ある可能性があると結論付けました。変換を目的とした STR_TO_DATE
、CONVERT
、および CAST
関数について学習しました。