MySQLでString
型の値をDATE
型やDATETIME
型に変換するには、STR_TO_DATE()
関数を使う方法が一般的です。この関数は、文字列を指定したフォーマットに基づいて日付型に変換します。
STR_TO_DATE()
関数の構文
STR_TO_DATE(文字列, フォーマット)
-
文字列: 変換したい日付の文字列(
VARCHAR
やCHAR
型)。 - フォーマット: その文字列がどのようにフォーマットされているかを示すパターン。
フォーマット指定子の例
フォーマット指定子 | 説明 | 例 |
---|---|---|
%Y |
4桁の年 | 2024 |
%m |
2桁の月 | 01, 12 |
%d |
2桁の日 | 01, 31 |
%H |
2桁の時 (24時間制) | 00, 23 |
%i |
2桁の分 | 00, 59 |
%s |
2桁の秒 | 00, 59 |
例1: String
型をDATE
型に変換
日付が 2024-10-04
というフォーマットの文字列を DATE
型に変換したい場合、以下のようにします。
SELECT STR_TO_DATE('2024-10-04', '%Y-%m-%d');
これにより、文字列 '2024-10-04'
が DATE
型の 2024-10-04
に変換されます。
例2: String
型をDATETIME
型に変換
日付と時間が含まれている文字列 '2024-10-04 12:30:45'
を DATETIME
型に変換する場合、以下のようにします。
SELECT STR_TO_DATE('2024-10-04 12:30:45', '%Y-%m-%d %H:%i:%s');
これにより、文字列 '2024-10-04 12:30:45'
が DATETIME
型の 2024-10-04 12:30:45
に変換されます。
例3: テーブルの列を変換して取得
例えば、テーブルの中に VARCHAR
型で日付が保存されている場合、その列をDATE
型として取得することもできます。
SELECT STR_TO_DATE(date_column, '%Y-%m-%d') AS formatted_date
FROM your_table;
例4: 変換後に別の列に更新
もし既存の文字列型の列を変換して、別のDATE
型の列に保存したい場合は、UPDATE
文を使用します。
UPDATE your_table
SET date_column_converted = STR_TO_DATE(date_column, '%Y-%m-%d');
この例では、date_column
という文字列型の列を STR_TO_DATE()
で変換し、date_column_converted
という DATE
型の列に保存しています。
まとめ
-
STR_TO_DATE()
関数を使って、文字列をDATE
やDATETIME
型に変換できます。 - 変換する際には、文字列のフォーマットに応じたフォーマット指定子を使う必要があります。
-
SELECT
文で変換結果を取得したり、UPDATE
文で既存のデータを更新できます。