MySQLのSELECT文で日付形式を変更する最良の方法とは?
MySQLのSELECT文で日付形式を変更するには、DATE_FORMAT関数を使用するのが最も効果的です。基本的な構文は以下のとおりです。
SELECT DATE_FORMAT(yourColumnName, "%d/%m/%Y %H:%i") AS anyAliasName FROM yourTableName WHERE yourCondition;
サンプルテーブルの作成
この仕組みを理解するために、まずサンプル用のテーブルを作成しましょう。テーブル作成クエリは以下のとおりです。
mysql> create table bestDateFormatDemo - > ( - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - > ArrivalDateTime datetime - > ); Query OK, 0 rows affected (0.64 sec)
レコードの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを追加します。
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values(now());
Query OK, 1 row affected (0.11 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values(date_add(now(),interval -2 year));
Query OK, 1 row affected (0.33 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values('2014-01-31 13:45:56');
Query OK, 1 row affected (0.15 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values('2016-02-11 12:40:30');
Query OK, 1 row affected (0.17 sec)
mysql> insert into bestDateFormatDemo(ArrivalDateTime) values('2018-12-31 12:59:59');
Query OK, 1 row affected (0.19 sec)登録データの確認
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from bestDateFormatDemo;
実行結果は以下のとおりです。
+----+---------------------+ | Id | ArrivalDateTime | +----+---------------------+ | 1 | 2019-02-22 22:50:10 | | 2 | 2017-02-22 22:50:28 | | 3 | 2014-01-31 13:45:56 | | 4 | 2016-02-11 12:40:30 | | 5 | 2018-12-31 12:59:59 | +----+---------------------+ 5 rows in set (0.00 sec)
DATE_FORMAT関数で日付形式を変更する
それでは本題です。SELECT文で日付形式を変更するクエリは以下のとおりです。ここでは「日/月/年 時:分」という形式に変換しています。
mysql> SELECT DATE_FORMAT(ArrivalDateTime, "%d/%m/%Y %H:%i")AS changeDateFormat FROM bestDateFormatDemo WHERE Id IN(1,2,3,4,5);
実行結果は以下のとおりです。
+------------------+ | changeDateFormat | +------------------+ | 22/02/2019 22:50 | | 22/02/2017 22:50 | | 31/01/2014 13:45 | | 11/02/2016 12:40 | | 31/12/2018 12:59 | +------------------+ 5 rows in set (0.28 sec)
12時間表記で表示する方法
時刻を12時間表記で表示したい場合は、指定子「%H」の代わりに「%h」を使用します。
mysql> SELECT DATE_FORMAT(ArrivalDateTime, "%d/%m/%Y %h:%i")AS changeDateFormat FROM bestDateFormatDemo WHERE Id IN(1,2,3,4,5);
実行結果は以下のとおりです。
+------------------+ | changeDateFormat | +------------------+ | 22/02/2019 10:50 | | 22/02/2017 10:50 | | 31/01/2014 01:45 | | 11/02/2016 12:40 | | 31/12/2018 12:59 | +------------------+ 5 rows in set (0.00 sec)
まとめ
MySQLで日付形式を変更する際は、DATE_FORMAT関数が最適な選択肢です。「%Y」(4桁の年)、「%m」(2桁の月)、「%d」(2桁の日)、「%H」(24時間表記の時)、「%h」(12時間表記の時)、「%i」(分)などのフォーマット指定子を組み合わせることで、表示形式を柔軟にカスタマイズできます。用途に応じて指定子を使い分け、読みやすい日付表示を実現しましょう。
-
MySQLで昨日の日付を取得する方法|subdate()関数の使い方を実例付きで解説
MySQLで昨日の日付を取得したい場合は、subdate()関数を使うのが便利です。この記事では、基本的な構文から、実際にテーブルを作成して動作を確認するまでの手順をサンプルコードとともにわかりやすく解説します。 subdate()関数の基本構文 日時カラムから1日前の日付を取得するには、以下のように記述します。 SELECT SUBDATE(日時カラム名, INTERVAL 1 DAY) AS 別名 FROM テーブル名; サンプルテーブルの作成 まずは動作確認用に、datetime型のカラムを持つテーブルを作成します。 mysql> CREATE TABLE YesterdayD
-
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」形式に整形