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

MySQLでDATETIME型からDATE型へ変換する方法:CAST()関数の使い方

MySQLでは、CAST()関数を使うことで、DATETIME型(日時)の値をDATE型(日付)に簡単に変換できます。時刻情報を取り除いて日付だけを抽出したい場合に便利なテクニックです。

基本構文

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

それでは、実際の例を使って動作を確認していきましょう。

1. サンプルテーブルの作成

まず、DATETIME型のカラムを持つテーブルを作成します。

mysql> create table ConvertDateTimeToDate
-> (
-> ArrivalDatetime datetime
-> );
Query OK, 0 rows affected (0.37 sec)

2. データの挿入

次に、INSERT文を使って日時データを登録します。現在日時から1年前の日付を生成するDATE_ADD()関数と、直接指定した日時文字列を使用しています。

mysql> insert into ConvertDateTimeToDate values(date_add(now(),interval -1 year));
Query OK, 1 row affected (0.19 sec)

mysql> insert into ConvertDateTimeToDate values('2017-11-21 13:10:20');
Query OK, 1 row affected (0.14 sec)

mysql> insert into ConvertDateTimeToDate values('2016-05-24 21:11:24');
Query OK, 1 row affected (0.26 sec)

mysql> insert into ConvertDateTimeToDate values('2012-04-30 04:05:50');
Query OK, 1 row affected (0.13 sec)

3. 登録データの確認

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

mysql> select *from ConvertDateTimeToDate;

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

+---------------------+
| ArrivalDatetime     |
+---------------------+
| 2017-12-27 10:05:21 |
| 2017-11-21 13:10:20 |
| 2016-05-24 21:11:24 |
| 2012-04-30 04:05:50 |
+---------------------+
4 rows in set (0.00 sec)

4. DATETIME型からDATE型への変換クエリ

ここが本題です。CAST()関数を使って、DATETIME型の値をDATE型に変換します。

mysql> select cast(ArrivalDatetime as Date) as Date from ConvertDateTimeToDate;

実行結果を見ると、時刻部分が取り除かれ、日付だけが表示されていることがわかります。

+------------+
| Date       |
+------------+
| 2017-12-27 |
| 2017-11-21 |
| 2016-05-24 |
| 2012-04-30 |
+------------+
4 rows in set (0.00 sec)

補足:DATE()関数による代替方法

MySQLには、同じ目的で使えるDATE()関数も用意されています。CAST()と同様に、DATETIME型から日付部分だけを抽出できます。

mysql> select DATE(ArrivalDatetime) as Date from ConvertDateTimeToDate;

どちらの方法でも結果は同じですが、可読性やチーム内のコーディング規約に合わせて使い分けるとよいでしょう。また、WHERE句での日付比較を行う際にも、この変換テクニックは非常に役立ちます。

  1. MySQLで当日の00:00から現在時刻までのレコードを抽出するクエリの書き方

    はじめにMySQLで「今日の日付の午前0時(00:00)から現在時刻まで」のレコードを取得したいケースはよくあります。例えば、現在の日時が 2019-09-14 08:50:10 である場合、2019-09-14 00:00:00 から 2019-09-14 08:50:10 までの範囲にあるレコードを抽出することになります。本記事では、実際にテーブルを作成し、データを挿入しながら、この条件を実現するクエリを具体的に解説します。サンプルテーブルの作成まず、DATETIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable( &nbs

  2. MySQLで時間をHH:MM:SSからHH:MM形式に変換する方法

    MySQLのTIME_FORMAT()関数で時間形式を変換するMySQLでTIME型の時間を「HH:MM:SS」から「HH:MM」形式に変換するには、TIME_FORMAT()関数を使用します。この関数を使うと、秒を取り除いた見やすい時間表示を簡単に実現できます。ここでは、実際の手順をサンプルコードとともに解説します。1. サンプルテーブルの作成まず、TIME型のカラムを持つテーブルを作成します。mysql> create table DemoTable1419-> (-> ArrivalTime time-> );Query OK, 0 rows affected (