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

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」(分)などのフォーマット指定子を組み合わせることで、表示形式を柔軟にカスタマイズできます。用途に応じて指定子を使い分け、読みやすい日付表示を実現しましょう。

  1. MySQLで昨日の日付を取得する方法|subdate()関数の使い方を実例付きで解説

    MySQLで昨日の日付を取得したい場合は、subdate()関数を使うのが便利です。この記事では、基本的な構文から、実際にテーブルを作成して動作を確認するまでの手順をサンプルコードとともにわかりやすく解説します。 subdate()関数の基本構文 日時カラムから1日前の日付を取得するには、以下のように記述します。 SELECT SUBDATE(日時カラム名, INTERVAL 1 DAY) AS 別名 FROM テーブル名; サンプルテーブルの作成 まずは動作確認用に、datetime型のカラムを持つテーブルを作成します。 mysql> CREATE TABLE YesterdayD

  2. 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」形式に整形