MySQL でのみ Datetime 型から Date 型に変換
- 
          
            MySQL で DATETIME型からDATE型に変換する
- 
          
            DATE()を使用して、MySQL でDATETIMEをDATEに変換する
- 
          
            CAST()を使用して、MySQL でDATETIMEをDATEに変換する
- 
          
            CONVERT()を使用して、MySQL でDATETIMEをDATEに変換する
- 
          
            DATE_FORMAT()を使用して、MySQL でDATETIMEをDATEに変換する
 
今日は、MySQL で DATETIME 型を DATE 型に変換する DATE()、CAST()、CONVERT()、および DATE_FORMAT() メソッドについて学びます。 上記の方法は利用可能で、MySQL バージョン 4.0 以降で使用できます。
MySQL で DATETIME 型から DATE 型に変換する
    
コード例で理解するために、id、productName、orderNumber、および 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 で DATETIME を DATE に変換する
コード例:
 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 で DATETIME を DATE に変換する
コード例:
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 で DATETIME を DATE に変換する
コード例:
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 で DATETIME を DATE に変換する
コード例:
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() 関数は DATETIME を DATE 型に変換し、現在の日付形式を変更するのに役立ちます。 たとえば、DATE を d/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)
