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

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」形式に整形するPHPコードの例です。

$LogintDate = strtotime('2019-01-12');
echo date('d/m/Y', $LogintDate);

このコードを実行すると、出力結果は以下のようになります。

12/01/2019

元の日付「2019-01-12」が、「12/01/2019」という形式に変換されていることがわかります。

MySQLで日付形式を変更する方法

データベース側で日付形式を変更したい場合は、MySQLのDATE_FORMAT()関数を使用します。基本構文は以下の通りです。

SELECT DATE_FORMAT(カラム名,'%d/%m/%Y') AS 任意の別名 FROM テーブル名;

サンプルテーブルの作成

実際に動作を確認するため、まずはテスト用のテーブルを作成しましょう。

mysql> create table Date_FormatDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT,
    -> LoginDate datetime,
    -> PRIMARY KEY(Id)
    -> );
Query OK, 0 rows affected (0.64 sec)

テストデータの挿入

次に、INSERT文を使っていくつかのレコードを挿入します。

mysql> insert into Date_FormatDemo(LoginDate) values(curdate());
Query OK, 1 row affected (0.17 sec)

mysql> insert into Date_FormatDemo(LoginDate) values(now());
Query OK, 1 row affected (0.27 sec)

mysql> insert into Date_FormatDemo(LoginDate) values('2019-11-12');
Query OK, 1 row affected (0.11 sec)

mysql> insert into Date_FormatDemo(LoginDate) values(date_add(now(),interval 2 day));
Query OK, 1 row affected (0.13 sec)

mysql> insert into Date_FormatDemo(LoginDate) values(date_add(curdate(),interval -2 day));
Query OK, 1 row affected (0.22 sec)

ここでは、curdate()(現在の日付)、now()(現在の日時)、さらにdate_add()を使って2日後・2日前の日付も登録しています。

登録データの確認

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

mysql> select *from Date_FormatDemo;

出力結果は以下の通りです。

+----+---------------------+
| Id | LoginDate           |
+----+---------------------+
| 1 | 2019-01-12 00:00:00 |
| 2 | 2019-01-12 22:53:53 |
| 3 | 2019-11-12 00:00:00 |
| 4 | 2019-01-14 22:54:27 |
| 5 | 2019-01-10 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)

DATE_FORMAT()で形式を変換する

それでは、日付を「dd/mm/yyyy」形式に変更してみましょう。実行するクエリは以下の通りです。

mysql> select date_format(LoginDate,'%d/%m/%Y') as DateFormat from Date_FormatDemo;

出力結果は以下のようになります。

+------------+
| DateFormat |
+------------+
| 12/01/2019 |
| 12/01/2019 |
| 12/11/2019 |
| 14/01/2019 |
| 10/01/2019 |
+------------+
5 rows in set (0.00 sec)

まとめ

PHPではdate()関数とstrtotime()関数を組み合わせることで、MySQLではDATE_FORMAT()関数を使うことで、それぞれ日付を「dd/mm/yyyy」形式に変換できます。用途に応じて、アプリケーション側(PHP)で変換するか、データベース側(MySQL)で変換するかを選択するとよいでしょう。なお、日本国内向けのシステムでは「yyyy/mm/dd」や「yyyy年mm月dd日」形式が一般的なため、その場合は書式指定子を%Y/%m/%dのように変更すれば対応可能です。

  1. PHP変数「11:00 AM」をMySQLの時間形式に変換する方法

    PHPの「11:00 AM」をMySQLの時間形式に変換する方法 MySQLのTIME型やDATETIME型は、時刻を24時間表記の「HH:MM:SS」形式で管理します。そのため、「11:00 AM」のようにAM/PMを含む文字列をデータベースに保存する場合は、事前に形式を変換しておく必要があります。本記事では、PHP標準のDateTimeクラスを使った変換方法を、サンプルコードと実行結果付きで解説します。 変換の基本の流れ DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する format() … 解析結果を「H:i:s」(2

  2. PHPで日付形式を変換する方法|strtotime・date関数の使い方を解説

    PHPで日付形式を変換するには、strtotime関数とdate関数を組み合わせるのが基本のアプローチです。ここでは、実際のサンプルコードをもとに、その仕組みと注意点をわかりやすく解説します。サンプルコード<?php    function string_convert($my_date){        $sec = strtotime($my_date);        $my_date