MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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関数を使えば適切な日付形式に変換できます。変換後のデータは、日付同士の比較や並べ替え、期間検索などの処理にそのまま活用できるため、データベース操作の幅が大きく広がります。文字列として保存された日付データにお困りの場合は、ぜひこの方法をお試しください。

  1. VARCHARデータをMySQLの日付形式に変換する方法

    VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate varchar(20)

  2. 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文を使って、「日/月/年 時:分:秒」