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

MySQLでDATETIME型をDATE型にキャストする方法【CAST関数の使い方】

MySQLでDATETIME型をDATE型にキャストする方法

MySQLでDATETIME型の値をDATE型として取得したい場合は、CAST()関数を使用します。時刻情報を取り除いて日付だけを抽出できるため、日付でのグループ化や比較を行いたい場面で非常に便利です。

基本的な構文は以下のとおりです。

SELECT CAST(カラム名 AS DATE) AS 任意の別名 FROM テーブル名;

サンプルテーブルの作成

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

mysql> CREATE TABLE ConvertDatetimeToDate
-> (
    -> YourDatetime DATETIME
-> );
Query OK, 0 rows affected (0.95 sec)

DATETIMEデータの挿入

続いて、INSERT文を使って現在の日時をもとに生成した複数のDATETIME値をテーブルに登録します。ここでは、翌日・前日・翌年・前年の日時を挿入しています。

mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL 1 DAY));
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL -1 DAY));
Query OK, 1 row affected (0.15 sec)

mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL 1 YEAR));
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO ConvertDatetimeToDate VALUES(DATE_ADD(NOW(), INTERVAL -1 YEAR));
Query OK, 1 row affected (0.16 sec)

挿入したレコードの確認

登録されたすべてのレコードを表示してみましょう。

mysql> SELECT * FROM ConvertDatetimeToDate;

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

+---------------------+
| YourDatetime        |
+---------------------+
| 2018-11-28 16:12:50 |
| 2018-11-26 16:13:00 |
| 2019-11-27 16:13:13 |
| 2017-11-27 16:13:24 |
+---------------------+
4 rows in set (0.00 sec)

このように、DATETIME型のカラムには「日付 + 時刻」の形式で値が格納されていることがわかります。

CAST()関数でDATETIMEをDATEに変換する

それでは、冒頭で紹介した構文を使って、DATETIME型をDATE型にキャストしてみましょう。

mysql> SELECT CAST(YourDatetime AS DATE) AS OnlyDateDemo FROM ConvertDatetimeToDate;

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

+--------------+
| OnlyDateDemo |
+--------------+
| 2018-11-28   |
| 2018-11-26   |
| 2019-11-27   |
| 2017-11-27   |
+--------------+
4 rows in set (0.00 sec)

時刻部分が取り除かれ、日付だけが表示されました。

補足:DATE()関数でも同じ結果が得られる

なお、CAST()関数の代わりにDATE()関数を使用しても同様に日付のみを抽出できます。

mysql> SELECT DATE(YourDatetime) AS OnlyDateDemo FROM ConvertDatetimeToDate;

どちらの方法でも結果は同じですが、可読性の観点からはDATE()関数の方がシンプルでおすすめです。用途に応じて使い分けるとよいでしょう。

  1. MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説

    MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」

  2. PythonでMySQLに日付データを挿入する方法をわかりやすく解説

    PythonからMySQLデータベースに日付を挿入するには、まずテーブル側の準備が必要です。挿入先のカラムは DATE 型または DATETIME 型として定義しておきましょう。 日付を文字列に変換してから挿入する MySQLに日付を登録する際は、Pythonのdatetimeオブジェクトをそのまま渡すのではなく、あらかじめ文字列形式に変換しておく必要があります。この変換には、標準ライブラリ datetime モジュールが提供する strftime() メソッドを使うのが一般的です。 コード例 from datetime import datetime now = datetime.now(