MySQLでdd.mm.yyyy形式の日付をYYYY-MM-DDに変換する方法
MySQLでは、STR_TO_DATE()関数を使うことで、「11.01.2019」のような「dd.mm.yyyy」形式の日付文字列を「YYYY-MM-DD」形式に簡単に変換できます。この記事では、具体的な手順をサンプルコードとともにわかりやすく解説します。
STR_TO_DATE()関数の基本構文
STR_TO_DATE()関数は、文字列として保存された日付データを、書式指定子(フォーマット指定子)に従って解析し、日付型へ変換します。書式指定子はすべて「%」で始まるのが特徴です。基本構文は以下のとおりです。
SELECT STR_TO_DATE(yourDateColumnName,'%d.%m.%Y') as anyVariableName FROM yourTableName;
今回使用する主な書式指定子の意味は以下のとおりです。
- %d:日(01〜31)
- %m:月(01〜12)
- %Y:4桁の年(例:2019)
サンプルテーブルの作成
実際に動作を確認するため、まずテーブルを作成しましょう。テーブル作成のクエリは次のとおりです。
mysql> create table ConvertIntoDateFormat -> ( -> Id int NOT NULL AUTO_INCREMENT, -> LoginDate varchar(30), -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.47 sec)
レコードの挿入
INSERTコマンドを使って、いくつかのサンプルデータを挿入します。
mysql> insert into ConvertIntoDateFormat(LoginDate) values('11.01.2019');
Query OK, 1 row affected (0.10 sec)
mysql> insert into ConvertIntoDateFormat(LoginDate) values('10.04.2017');
Query OK, 1 row affected (0.16 sec)
mysql> insert into ConvertIntoDateFormat(LoginDate) values('21.10.2016');
Query OK, 1 row affected (0.12 sec)
mysql> insert into ConvertIntoDateFormat(LoginDate) values('26.09.2018');
Query OK, 1 row affected (0.14 sec)
mysql> insert into ConvertIntoDateFormat(LoginDate) values('25.12.2012');
Query OK, 1 row affected (0.17 sec)
登録データの確認
SELECT文でテーブル内の全レコードを表示して確認します。
mysql> select *from ConvertIntoDateFormat;
実行結果は以下のとおりです。
+----+------------+ | Id | LoginDate | +----+------------+ | 1 | 11.01.2019 | | 2 | 10.04.2017 | | 3 | 21.10.2016 | | 4 | 26.09.2018 | | 5 | 25.12.2012 | +----+------------+ 5 rows in set (0.00 sec)
日付をYYYY-MM-DD形式に変換する
それでは、STR_TO_DATE()関数を使って「dd.mm.yyyy」形式の日付を「YYYY-MM-DD」形式に変換してみましょう。実行するクエリは以下のとおりです。
mysql> select str_to_date(LoginDate,'%d.%m.%Y') as DateFormat from ConvertIntoDateFormat;
実行結果:
+------------+ | DateFormat | +------------+ | 2019-01-11 | | 2017-04-10 | | 2016-10-21 | | 2018-09-26 | | 2012-12-25 | +------------+ 5 rows in set (0.00 sec)
このように、「11.01.2019」が「2019-01-11」という標準的な日付形式へ正しく変換されていることがわかります。
DATE_FORMAT()関数との組み合わせ
同じ目的であれば、DATE_FORMAT()関数を組み合わせて使うことも可能です。STR_TO_DATE()で一度日付型に変換した後、DATE_FORMAT()で出力形式を明示的に指定する方法です。クエリは以下のとおりです。
mysql> select DATE_FORMAT(STR_TO_DATE(LoginDate,'%d.%m.%Y'), '%Y-%m-%d') as DateFormat from -> ConvertIntoDateFormat;
実行結果:
+------------+ | DateFormat | +------------+ | 2019-01-11 | | 2017-04-10 | | 2016-10-21 | | 2018-09-26 | | 2012-12-25 | +------------+ 5 rows in set (0.00 sec)
まとめ
MySQLで「dd.mm.yyyy」形式の日付文字列を「YYYY-MM-DD」形式に変換するには、STR_TO_DATE()関数が非常に便利です。さらにDATE_FORMAT()関数を組み合わせれば、出力形式を柔軟に制御することもできます。varchar型などで文字列として保存された日付データを扱う際には、ぜひこの方法を活用してみてください。
-
VARCHARデータをMySQLの日付形式に変換する方法
VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate varchar(20)
-
MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説
MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」