MySQL でのみ Datetime 型から Date 型に変換

Mehvish Ashiq 2023年6月20日
  1. MySQL で DATETIME 型から DATE 型に変換する
  2. DATE() を使用して、MySQL で DATETIMEDATE に変換する
  3. CAST() を使用して、MySQL で DATETIMEDATE に変換する
  4. CONVERT() を使用して、MySQL で DATETIMEDATE に変換する
  5. DATE_FORMAT() を使用して、MySQL で DATETIMEDATE に変換する
MySQL でのみ Datetime 型から Date 型に変換

今日は、MySQL で DATETIME 型を DATE 型に変換する DATE()CAST()CONVERT()、および DATE_FORMAT() メソッドについて学びます。 上記の方法は利用可能で、MySQL バージョン 4.0 以降で使用できます。

MySQL で DATETIME 型から DATE 型に変換する

コード例で理解するために、idproductNameorderNumber、および orderDateTime を属性として持つ orders テーブルを作成してみましょう。 id フィールドを使用して主キーも作成します。 次のクエリを参照してください。

コード例:

CREATE TABLE orders(
    id INT NOT NULL,
    productName VARCHAR(50) NOT NULL,
    orderNumber INT NOT NULL,
    orderDateTime DATETIME NOT NULL,
    PRIMARY KEY(id)
);

INSERT INTO orders (id, productName, orderNumber, orderDateTime)
VALUES
(1, 'Oppo F17', 3322, '2022-04-11 04:32:15'),
(2, 'DELL Laptop', 5433, '2022-05-12 12:23:09'),
(3, 'HP Mouse', 3489, '2022-05-16 07:23:16');

SELECT * FROM orders;

出力:

+----+-------------+-------------+---------------------+
| id | productName | orderNumber | orderDateTime       |
+----+-------------+-------------+---------------------+
|  1 | Oppo F17    |        3322 | 2022-04-11 04:32:15 |
|  2 | DELL Laptop |        5433 | 2022-05-12 12:23:09 |
|  3 | HP Mouse    |        3489 | 2022-05-16 07:23:16 |
+----+-------------+-------------+---------------------+
3 rows in set (0.00 sec)

テーブルの準備ができたら、プロジェクトの要件に応じて、次のいずれかの方法を使用して目標を達成できます。

DATE() を使用して、MySQL で DATETIMEDATE に変換する

コード例:

 SELECT id, productName, orderNumber, DATE(orderDateTime) FROM orders;

出力:

+----+-------------+-------------+---------------------+
| id | productName | orderNumber | DATE(orderDateTime) |
+----+-------------+-------------+---------------------+
|  1 | Oppo F17    |        3322 | 2022-04-11          |
|  2 | DELL Laptop |        5433 | 2022-05-12          |
|  3 | HP Mouse    |        3489 | 2022-05-16          |
+----+-------------+-------------+---------------------+
3 rows in set (0.00 sec)

DATE() 関数は、有効な DATE または DATETIME タイプ フィールドから DATE 部分を取得できます。 無効な式が渡された場合、NULL を返します。

CAST() を使用して、MySQL で DATETIMEDATE に変換する

コード例:

SELECT id, productName, orderNumber, CAST(orderDateTime AS DATE) FROM orders;

出力:

+----+-------------+-------------+-----------------------------+
| id | productName | orderNumber | CAST(orderDateTime AS DATE) |
+----+-------------+-------------+-----------------------------+
|  1 | Oppo F17    |        3322 | 2022-04-11                  |
|  2 | DELL Laptop |        5433 | 2022-05-12                  |
|  3 | HP Mouse    |        3489 | 2022-05-16                  |
+----+-------------+-------------+-----------------------------+
3 rows in set (0.00 sec)

CAST() メソッドは、あるデータ型の値を別の特定のデータ型にキャスト (変換) するために使用されます。

CONVERT() を使用して、MySQL で DATETIMEDATE に変換する

コード例:

SELECT id, productName, orderNumber, CONVERT(orderDateTime, DATE) FROM orders;

出力:

+----+-------------+-------------+------------------------------+
| id | productName | orderNumber | CONVERT(orderDateTime, DATE) |
+----+-------------+-------------+------------------------------+
|  1 | Oppo F17    |        3322 | 2022-04-11                   |
|  2 | DELL Laptop |        5433 | 2022-05-12                   |
|  3 | HP Mouse    |        3489 | 2022-05-16                   |
+----+-------------+-------------+------------------------------+
3 rows in set (0.00 sec)

CONVERT() メソッドを使用して、DATETIME 型フィールドを DATE のみに変換することもできます。 2つの引数を受け入れます。1つ目は変換する必要がある値で、2つ目は指定された値が変換されるデータ型です。

DATE_FORMAT() を使用して、MySQL で DATETIMEDATE に変換する

コード例:

SELECT id, productName, orderNumber,
DATE_FORMAT(orderDateTime, '%Y-%m-%d') FROM orders;

出力:

+----+-------------+-------------+----------------------------------------+
| id | productName | orderNumber | DATE_FORMAT(orderDateTime, '%Y-%m-%d') |
+----+-------------+-------------+----------------------------------------+
|  1 | Oppo F17    |        3322 | 2022-04-11                             |
|  2 | DELL Laptop |        5433 | 2022-05-12                             |
|  3 | HP Mouse    |        3489 | 2022-05-16                             |
+----+-------------+-------------+----------------------------------------+
3 rows in set (0.00 sec)

DATE_FORMAT() 関数は DATETIMEDATE 型に変換し、現在の日付形式を変更するのに役立ちます。 たとえば、DATEd/m/Y 形式で表示したい場合は、次のようにします。

コード例:

SELECT id, productName, orderNumber,
DATE_FORMAT(orderDateTime, '%d/%m/%Y') FROM orders;

出力:

+----+-------------+-------------+----------------------------------------+
| id | productName | orderNumber | DATE_FORMAT(orderDateTime, '%d/%m/%Y') |
+----+-------------+-------------+----------------------------------------+
|  1 | Oppo F17    |        3322 | 11/04/2022                             |
|  2 | DELL Laptop |        5433 | 12/05/2022                             |
|  3 | HP Mouse    |        3489 | 16/05/2022                             |
+----+-------------+-------------+----------------------------------------+
3 rows in set (0.00 sec)

月番号の代わりに月名を表示したい場合は、DATE_FORMAT() 関数を使用して次の形式に変換することもできます。

コード例:

SELECT id, productName, orderNumber,
DATE_FORMAT(orderDateTime, '%D %M %Y') FROM orders;

出力:

+----+-------------+-------------+----------------------------------------+
| id | productName | orderNumber | DATE_FORMAT(orderDateTime, '%D %M %Y') |
+----+-------------+-------------+----------------------------------------+
|  1 | Oppo F17    |        3322 | 11th April 2022                        |
|  2 | DELL Laptop |        5433 | 12th May 2022                          |
|  3 | HP Mouse    |        3489 | 16th May 2022                          |
+----+-------------+-------------+----------------------------------------+
3 rows in set (0.00 sec)
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MySQL Date