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文で既存のデータを更新できます。