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

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

VARCHAR型の日付文字列をDATE型に変換するには

MySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。

以下、具体的な手順をサンプルとともに解説します。

1. サンプルテーブルの作成

まず、VARCHAR型のカラムを持つテーブルを作成します。

mysql> create table DemoTable1989
    (
    DueDate varchar(20)
    );
Query OK, 0 rows affected (0.91 sec)

2. テストデータの挿入

INSERTコマンドを使って、「日/月/年」の形式で日付文字列を挿入します。

mysql> insert into DemoTable1989 values('31/01/2015');
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable1989 values('01/12/2018');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1989 values('25/10/2019');
Query OK, 1 row affected (0.11 sec)

3. 挿入したレコードの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1989;

実行結果は以下の通りです。現時点では文字列として保存されていることがわかります。

+------------+
| DueDate    |
+------------+
| 31/01/2015 |
| 01/12/2018 |
| 25/10/2019 |
+------------+
3 rows in set (0.00 sec)

4. STR_TO_DATE()で日付形式に変換する

ここで本題の変換クエリです。STR_TO_DATE()関数の第2引数に「%d/%m/%Y」を指定することで、「日/月/年」形式の文字列をMySQL標準の「年-月-日」形式に変換できます。

mysql> select str_to_date(DueDate,'%d/%m/%Y') as MySQLDateFormat from DemoTable1989;

実行結果:

+-----------------+
| MySQLDateFormat |
+-----------------+
| 2015-01-31      |
| 2018-12-01      |
| 2019-10-25      |
+-----------------+
3 rows in set (0.05 sec)

主な書式指定子の一覧

STR_TO_DATE()では、入力文字列の形式に合わせて書式指定子を変更する必要があります。よく使われる指定子は以下の通りです。

  • %d … 日(01〜31)
  • %m … 月(01〜12)
  • %Y … 4桁の年(例:2024)
  • %y … 2桁の年(例:24)
  • %H … 時(00〜23)
  • %i … 分(00〜59)
  • %s … 秒(00〜59)

たとえば「2024年01月15日」のような文字列であれば、「%Y年%m月%d日」のように指定します。入力データの実際の形式と書式指定子が一致していないと、NULLが返されたり不正な日付になったりするため注意しましょう。

まとめ

VARCHAR型で保存された日付データをMySQLの日付形式に変換するには、STR_TO_DATE()関数を使うのが最も簡単です。文字列の並び順(年月日の順序や区切り文字)に応じて適切な書式指定子を指定することで、正確にDATE型へ変換できます。データの検索やソート、日付計算を正しく行うためにも、可能であればテーブル設計の時点でDATE型やDATETIME型を採用しておくことをおすすめします。

  1. MySQLで文字列(varchar)をタイムスタンプ形式に変換する方法

    MySQLで文字列をタイムスタンプ形式に変換するには?MySQLで文字列(varchar型)をタイムスタンプ形式に変換するには、STR_TO_DATE()関数とDATE_FORMAT()関数を組み合わせて使用します。STR_TO_DATE()で文字列を日付値に解析し、DATE_FORMAT()で目的の形式に整形します。まず、実際の動作を確認するためのサンプルテーブルを作成しましょう。mysql> create table DemoTable1602     -> (     -> Reportin

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