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

MySQLで日付を「dd/mm/yyyy」から「yyyymmdd」形式に変換する方法

はじめに

MySQLでは、STR_TO_DATE()関数とDATE_FORMAT()関数を組み合わせることで、「dd/mm/yyyy」形式で保存された日付文字列を「yyyymmdd」形式に簡単に変換できます。本記事では、実際のテーブルを作成しながら、その手順を順番に解説します。

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

まず、日付をVARCHAR型の文字列として保存するテーブルを作成します。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Admissiondate varchar(200)
);
Query OK, 0 rows affected (0.54 sec)

このテーブルでは、Admissiondateカラムに「dd/mm/yyyy」形式の日付文字列が格納される想定です。

2. テストデータの挿入

次に、INSERT文を使ってサンプルデータを挿入します。

mysql> insert into DemoTable(Admissiondate) values('21/10/2014');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(Admissiondate) values('01/12/2016');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Admissiondate) values('31/01/2017');
Query OK, 1 row affected (0.14 sec)

3. 登録データの確認

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

mysql> select *from DemoTable;

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

+----+---------------+
| Id | Admissiondate |
+----+---------------+
| 1  | 21/10/2014    |
| 2  | 01/12/2016    |
| 3  | 31/01/2017    |
+----+---------------+
3 rows in set (0.00 sec)

4. 日付形式の変換クエリ

ここが本題となる変換処理です。STR_TO_DATE()関数で元の文字列を日付値に解析し、その結果をDATE_FORMAT()関数で「%Y%m%d」(yyyymmdd)形式にフォーマットします。

mysql> select date_format(str_to_date(Admissiondate,'%d/%m/%Y'),'%Y%m%d') from DemoTable;

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

+-------------------------------------------------------------+
| date_format(str_to_date(Admissiondate,'%d/%m/%Y'),'%Y%m%d') |
+-------------------------------------------------------------+
| 20141021                                                    |
| 20161201                                                    |
| 20170131                                                    |
+-------------------------------------------------------------+
3 rows in set (0.00 sec)

「21/10/2014」が「20141021」、「31/01/2017」が「20170131」として正しく変換されていることが確認できます。

各書式指定子の意味

  • %d:日(2桁、例:21)
  • %m:月(2桁、例:10)
  • %Y:年(4桁、例:2014)

STR_TO_DATE()側の「'%d/%m/%Y'」は入力文字列の形式を示し、DATE_FORMAT()側の「'%Y%m%d'」は出力したい形式を指定しています。この組み合わせにより、任意の日付形式への柔軟な変換が可能です。

まとめ

MySQLで「dd/mm/yyyy」形式の日付文字列を「yyyymmdd」形式に変換するには、STR_TO_DATE()で日付に解析した上でDATE_FORMAT()で再フォーマットするのが基本の手順です。文字列として保存された日付データを扱う際は、このテクニックを活用することで、ソートや比較などの日付操作もスムーズに行えるようになります。

  1. PHP・MySQLで日付形式をdd/mm/yyyyに変更する方法

    PHPやMySQLでは、日付の表示形式を自由に変更できます。本記事では、日付を「dd/mm/yyyy(日/月/年)」形式に変換する方法を、PHPとMySQLそれぞれのケースについて解説します。PHPで日付形式を変更する方法PHPでは、date()関数を使って日付形式を簡単に変更できます。基本構文は以下の通りです。date(d/m/Y, 日時の変数);また、文字列を日付として扱う場合は、strtotime()関数を使用します。この関数は、日付を表す文字列をUnixタイムスタンプに変換してくれるため、date()関数と組み合わせて使うのが一般的です。以下は、日時を「dd/mm/yyyy」形式に整形

  2. Pythonで日付文字列(mm/dd/yyyy)をdatetimeに変換する方法

    Pythonでは、標準ライブラリのdatetimeモジュールが提供するstrptime()関数を使うことで、文字列を日付(date)オブジェクトへ簡単に変換できます。変換の際は、「元の日付文字列」と「その文字列がどの形式で書かれているかを示すフォーマット指定子」の2つを引数として渡します。 基本的な使い方 import datetime date_str = 29/12/2017 # 日付文字列:2017年12月29日 format_str = %d/%m/%Y # フォーマット:「日/月/年」の形式 datetime_obj = datetime.datetime.strptim