MySQLでvarchar型の日付をSTR_TO_DATE関数で適切な形式に変換する方法
MySQLでは、日付データがvarchar型(文字列型)として保存されていることがあります。このような場合でも、STR_TO_DATE関数を使えば、文字列の日付を適切な日付形式に簡単に変換できます。
ここでは、varchar型で保存された日付をDATETIME形式に変換する手順を、具体的なサンプルコードとともに解説します。
1. サンプルテーブルの作成
まず、日付をvarchar型で保存するテーブルを作成しましょう。以下がそのクエリです。
mysql> create table convertDateDemo -> ( -> AdmissionDate varchar(200) -> ); Query OK, 0 rows affected (0.63 sec)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into convertDateDemo values('April 04 2019');
Query OK, 1 row affected (0.18 sec)
mysql> insert into convertDateDemo values('May 05 2018');
Query OK, 1 row affected (0.16 sec)
mysql> insert into convertDateDemo values('January 01 2012');
Query OK, 1 row affected (0.12 sec)
mysql> insert into convertDateDemo values('June 12 2016');
Query OK, 1 row affected (0.16 sec)
3. データの確認
SELECT文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select * from convertDateDemo;
実行すると、以下のような出力が得られます。
+-----------------+ | AdmissionDate | +-----------------+ | April 04 2019 | | May 05 2018 | | January 01 2012 | | June 12 2016 | +-----------------+ 4 rows in set (0.00 sec)
このように、「April 04 2019」のような文字列として日付が保存されているのが分かります。
4. STR_TO_DATE関数で日付を変換する
それでは、STR_TO_DATE関数を使って文字列の日付を日付形式に変換しましょう。クエリは以下の通りです。
mysql> select STR_TO_DATE(AdmissionDate, '%M %e %Y %l:%i%p') AS ConvertDate from convertDateDemo;
実行すると、「YYYY-MM-DD HH:MM:SS」形式のDATETIME値に変換されて出力されます。
+---------------------+ | ConvertDate | +---------------------+ | 2019-04-04 00:00:00 | | 2018-05-05 00:00:00 | | 2012-01-01 00:00:00 | | 2016-06-12 00:00:00 | +---------------------+ 4 rows in set (0.05 sec)
使用した書式指定子の意味
STR_TO_DATE関数の第2引数には、入力文字列の形式に合わせた書式指定子を指定します。今回の例で使った主な指定子は以下の通りです。
- %M:月の完全な英語名(April、Mayなど)
- %e:日(0〜31)
- %Y:4桁の年(2019など)
- %l:時間(12時間表記)
- %i:分(00〜59)
- %p:午前/午後(AM/PM)
まとめ
varchar型で保存された日付データも、STR_TO_DATE関数を使えば適切な日付形式に変換できます。変換後のデータは、日付同士の比較や並べ替え、期間検索などの処理にそのまま活用できるため、データベース操作の幅が大きく広がります。文字列として保存された日付データにお困りの場合は、ぜひこの方法をお試しください。
-
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文を使って、「日/月/年 時:分:秒」