MySQLのSTR_TO_DATE関数で日付形式を変換する方法
はじめに
MySQLでは、STR_TO_DATE()関数を使用することで、文字列として保存された日付データを正しい日付形式に変換できます。本記事では、varchar型のカラムに保存された「月-日-年 時:分:秒」形式の日付文字列を、標準的な日時形式へ変換する手順を解説します。
サンプルテーブルの作成
まず、日付をvarchar型(文字列)で保存するテーブルを作成します。
mysql> create table DemoTable(DueDate varchar(100));
Query OK, 0 rows affected (0.78 sec)
レコードの挿入
INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values('10-01-2019 10:19:20');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('12-03-2018 11:00:00');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('02-23-2018 04:20:40');
Query OK, 1 row affected (0.19 sec)テーブルの内容を確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
上記のコードを実行すると、次のような出力が得られます。
+---------------------+
| DueDate |
+---------------------+
| 10-01-2019 10:19:20 |
| 12-03-2018 11:00:00 |
| 02-23-2018 04:20:40 |
+---------------------+
3 rows in set (0.00 sec)
このように、日付が文字列としてそのまま保存されていることがわかります。
STR_TO_DATEで日付形式を変換する
以下が、STR_TO_DATE()とREPLACE()を組み合わせて日付形式を変換するクエリです。
mysql> SELECT STR_TO_DATE(REPLACE(DueDate,"'",''), '%c-%e-%Y %T') from DemoTable;
実行結果は次のとおりです。
+-----------------------------------------------------+
| STR_TO_DATE(REPLACE(DueDate,"'",''), '%c-%e-%Y %T') |
+-----------------------------------------------------+
| 2019-10-01 10:19:20 |
| 2018-12-03 11:00:00 |
| 2018-02-23 04:20:40 |
+-----------------------------------------------------+
3 rows in set (0.00 sec)
フォーマット指定子の解説
クエリ内で使用している主なフォーマット指定子は以下のとおりです。
- %c … 月(先頭にゼロを付けない数字:1〜12)
- %e … 日(先頭にゼロを付けない数字)
- %Y … 4桁の年
- %T … 24時間制の時刻(hh:mm:ss 形式)
まとめ
このように、STR_TO_DATE()関数を使えば、varchar型カラムに保存された不規則な形式の日付文字列を、「YYYY-MM-DD hh:mm:ss」という標準的なDATETIME形式へ簡単に変換できます。これにより、日付による並べ替えや範囲検索なども正しく行えるようになります。文字列として保存された日付データの取り扱いにお悩みの場合は、ぜひ本手法を活用してください。
-
MySQLの列をJSON形式で更新する方法をわかりやすく解説
MySQLの列をJSON形式で更新する方法データベースにJSONのような形式でレコードを保存・表示したい場合、MySQLのconcat()関数を使うと簡単に実現できます。この記事では、サンプルテーブルを作成し、concat()を使って列をJSON形式の文字列で更新するまでの一連の手順を、実行例とともに解説します。1. サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable1373 -> ( -> StudentId
-
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文を使って、「日/月/年 時:分:秒」