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

MySQLで日付形式を変換・更新する方法をわかりやすく解説

はじめに

MySQLでは、文字列として保存された日付データをSTR_TO_DATE()関数を使って正しい日付形式に変換できます。本記事では、実際のSQL文の例を通じて、日付形式の変換手順を段階的に解説します。

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

まず、日付データを文字列型(VARCHAR)で格納するテーブルを作成します。

mysql> create table DemoTable630 (ArrivalDate varchar(100));
Query OK, 0 rows affected (0.55 sec)

2. テストデータの挿入

次に、INSERT文を使って「YYYY-DD-MM」形式(年-日-月)の日付文字列を挿入します。この形式はMySQLの標準的な日付形式とは異なるため、後ほど変換が必要になります。

mysql> insert into DemoTable630 values('2015-21-01');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable630 values('2018-25-12');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable630 values('2019-15-07');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable630 values('2016-31-03');
Query OK, 1 row affected (0.17 sec)

3. 挿入したデータの確認

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

mysql> select * from DemoTable630;

実行結果は以下のとおりです。

+-------------+
| ArrivalDate |
+-------------+
| 2015-21-01 |
| 2018-25-12 |
| 2019-15-07 |
| 2016-31-03 |
+-------------+
4 rows in set (0.00 sec)

4. STR_TO_DATE関数で日付形式を変換する

文字列として保存された日付を正しい日付形式(YYYY-MM-DD)に変換するには、以下のようにSTR_TO_DATE関数を使用します。

mysql> select str_to_date(ArrivalDate,'%Y-%d-%m') from DemoTable630;

実行結果は以下のとおりです。「年-日-月」の順だった文字列が、標準的な「年-月-日」形式に変換されているのが確認できます。

+-------------------------------------+
| str_to_date(ArrivalDate,'%Y-%d-%m') |
+-------------------------------------+
| 2015-01-21 |
| 2018-12-25 |
| 2019-07-15 |
| 2016-03-31 |
+-------------------------------------+
4 rows in set (0.00 sec)

フォーマット指定子の意味

STR_TO_DATE関数で使用できる主なフォーマット指定子は以下のとおりです。

  • %Y:4桁の年(例:2024)
  • %d:2桁の日(01〜31)
  • %m:2桁の月(01〜12)

UPDATE文で実際にデータを更新する方法

表示上の変換ではなく、テーブル内のデータそのものを更新したい場合は、UPDATE文と組み合わせます。あらかじめDATE型のカラムを追加しておくと便利です。

mysql> ALTER TABLE DemoTable630 ADD ConvertedDate DATE;
mysql> UPDATE DemoTable630 SET ConvertedDate = STR_TO_DATE(ArrivalDate, '%Y-%d-%m');

これにより、元の文字列データを保持しながら、正しい日付型のデータを別カラムに保存できます。

まとめ

文字列として保存された日付データは、STR_TO_DATE関数とフォーマット指定子(%Y、%d、%mなど)を組み合わせることで簡単に正しい日付形式へ変換できます。SELECTでの表示変換だけでなく、UPDATE文を使えばテーブルのデータ自体も更新可能です。不正な形式の日付データを扱う際は、ぜひこの方法を活用してください。

  1. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ

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