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()で再フォーマットするのが基本の手順です。文字列として保存された日付データを扱う際は、このテクニックを活用することで、ソートや比較などの日付操作もスムーズに行えるようになります。
-
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」形式に整形
-
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