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

MySQLのSELECT *クエリでDATE_FORMAT()関数を使って日付をフォーマットする方法

MySQLで日付をフォーマットするには?

MySQLで日付をフォーマットしたい場合、FORMATDATE()という関数は存在しないため注意が必要です。代わりに、標準関数であるDATE_FORMAT()を使用します。

正しい構文は以下のとおりです。

SELECT *, DATE_FORMAT(日付カラム名, '書式') AS 任意の別名 FROM テーブル名;

この構文では、元のすべてのカラム(*)に加えて、指定した書式に変換された日付が新しい別名のカラムとして結果セットに追加されます。

サンプルテーブルの作成

構文を理解するために、まず実際にテーブルを作成してみましょう。テーブル作成用のクエリは次のとおりです。

mysql> CREATE TABLE DateFormatDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName varchar(10),
    -> UserLoginDate date
    -> );
Query OK, 0 rows affected (0.94 sec)

上記のテーブルには、ユーザーID・ユーザー名・ログイン日の3つのカラムを持たせています。

テストデータの挿入

続いて、INSERT文を使っていくつかのレコードを挿入します。クエリは以下のとおりです。

mysql> INSERT INTO DateFormatDemo(UserName, UserLoginDate) VALUES('Mike', curdate());
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DateFormatDemo(UserName, UserLoginDate) VALUES('Sam', '2018-05-09');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DateFormatDemo(UserName, UserLoginDate) VALUES('Carol', '2016-01-15');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DateFormatDemo(UserName, UserLoginDate) VALUES('Bob', '2015-12-31');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DateFormatDemo(UserName, UserLoginDate) VALUES('David', '2012-08-19');
Query OK, 1 row affected (0.09 sec)

なお、最初のレコードでは現在の日付を返すcurdate()関数を使用しています。

登録データの確認

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

mysql> SELECT * FROM DateFormatDemo;

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

+----+----------+---------------+
| Id | UserName | UserLoginDate |
+----+----------+---------------+
|  1 | Mike     | 2019-02-06    |
|  2 | Sam      | 2018-05-09    |
|  3 | Carol    | 2016-01-15    |
|  4 | Bob      | 2015-12-31    |
|  5 | David    | 2012-08-19    |
+----+----------+---------------+
5 rows in set (0.00 sec)

DATE_FORMAT()で日付をフォーマットする

それでは、DATE_FORMAT()をSELECT *と組み合わせて使用し、日付を「日-月-年(%d-%m-%Y)」の形式に変換してみましょう。クエリは以下のとおりです。

mysql> SELECT *, DATE_FORMAT(UserLoginDate, '%d-%m-%Y') AS NewFormatOfDate FROM DateFormatDemo;

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

+----+----------+---------------+-----------------+
| Id | UserName | UserLoginDate | NewFormatOfDate |
+----+----------+---------------+-----------------+
|  1 | Mike     | 2019-02-06    | 06-02-2019      |
|  2 | Sam      | 2018-05-09    | 09-05-2018      |
|  3 | Carol    | 2016-01-15    | 15-01-2016      |
|  4 | Bob      | 2015-12-31    | 31-12-2015      |
|  5 | David    | 2012-08-19    | 19-08-2012      |
+----+----------+---------------+-----------------+
5 rows in set (0.00 sec)

このように、%d(日)、%m(月)、%Y(4桁の年)といった書式指定子を組み合わせることで、目的の形式に柔軟に日付を整形できます。例えば、「%Y年%m月%d日」とすれば日本式の表記にも対応可能です。

  1. 【MySQL】日付がVARCHAR形式のカラムから特定のレコードを抽出する方法|STR_TO_DATE()の使い方

    テーブルのカラムに保存されている日付がVARCHAR型(文字列)の場合、そのままでは日付として比較することができません。このようなケースでは、STR_TO_DATE()関数を使って文字列を日付値に変換してから比較することで、特定のレコードを正確に抽出できます。 1. テーブルの作成 まず、日付をVARCHAR型で格納するサンプルテーブルを作成しましょう。 mysql> create table DemoTable ( DueDate varchar(60) ); Query OK, 0 rows affected (0.71 sec) 2. サンプルデータの挿入 INSERTコマ

  2. MySQLで日付を選択してテキスト形式にフォーマットする方法

    MySQLから日付データを選択し、任意のテキスト形式に整形するには、DATE_FORMAT()関数を使用します。まずは基本となる構文を見ていきましょう。基本構文select date_format(カラム名, %e %b %y) from テーブル名;それでは、実際にサンプルテーブルを作成しながら動作を確認していきます。サンプルテーブルの作成mysql> create table DemoTable -> ( -> DueDate date -> ); Query OK, 0 rows affected (0.52 sec)レコードの挿入inse