タイムスタンプから日付を抽出するMySQLクエリの書き方【DATE関数の使い方】
MySQLでは、TIMESTAMP型のカラムから日付部分だけを取り出したい場面がよくあります。そんなときに便利なのがDATE()関数です。この記事では、実際にテーブルを作成しながら、タイムスタンプから日付を抽出する方法をわかりやすく解説します。
1. サンプルテーブルの作成
まず、TIMESTAMP型のカラムを含むテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> CustomerName varchar(100),
-> CustomerShippingDate timestamp
-> );
Query OK, 0 rows affected (0.52 sec)
2. レコードの挿入
INSERT文を使って、いくつかのレコードをテーブルに追加します。
mysql> insert into DemoTable values('Chris','2019-01-21');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('David','2019-03-01');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Robert','2019-06-04');
Query OK, 1 row affected (0.25 sec)
3. テーブルの内容を確認する
SELECT文で全レコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+--------------+----------------------+ | CustomerName | CustomerShippingDate | +--------------+----------------------+ | Chris | 2019-01-21 00:00:00 | | David | 2019-03-01 00:00:00 | | Robert | 2019-06-04 00:00:00 | +--------------+----------------------+ 3 rows in set (0.00 sec)
ご覧のとおり、CustomerShippingDateカラムには「2019-01-21 00:00:00」のように、日付と時刻がセットで格納されています。
4. DATE()関数でタイムスタンプから日付を抽出する
タイムスタンプから日付部分のみを選択するには、次のようなクエリを実行します。
mysql> select *,date(CustomerShippingDate) from DemoTable;
出力結果
+--------------+----------------------+----------------------------+ | CustomerName | CustomerShippingDate | date(CustomerShippingDate) | +--------------+----------------------+----------------------------+ | Chris | 2019-01-21 00:00:00 | 2019-01-21 | | David | 2019-03-01 00:00:00 | 2019-03-01 | | Robert | 2019-06-04 00:00:00 | 2019-06-04 | +--------------+----------------------+----------------------------+ 3 rows in set (0.00 sec)
DATE()関数を使うことで、「2019-01-21 00:00:00」というタイムスタンプから時刻部分が取り除かれ、「2019-01-21」という日付だけを取得できました。
補足:その他の抽出方法と実践的な使い方
DATE()関数以外にも、CAST()関数やDATE_FORMAT()関数を使う方法があります。
-- CAST()を使う方法 SELECT *, CAST(CustomerShippingDate AS DATE) FROM DemoTable; -- DATE_FORMAT()で表示形式を指定する方法 SELECT *, DATE_FORMAT(CustomerShippingDate, '%Y-%m-%d') FROM DemoTable;
また、WHERE句と組み合わせれば、特定の日付のレコードだけを絞り込むことも可能です。
SELECT * FROM DemoTable WHERE DATE(CustomerShippingDate) = '2019-03-01';
用途に応じてこれらの関数を使い分けることで、日付データの処理がより柔軟になります。
-
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
-
MySQLでタイムスタンプ(UNIX時間)から日付のみを表示する方法
タイムスタンプ(UNIX時間)の値から日付を表示するには、MySQLのFROM_UNIXTIME()関数を使用します。この関数は、UNIXタイムスタンプを「YYYY-MM-DD HH:MM:SS」形式の日時に変換してくれます。ここでは、実際にテーブルを作成し、動作を確認していきましょう。 サンプルテーブルの作成 まず、タイムスタンプ値を格納するためのテーブルを作成します。 mysql> create table DemoTable -> ( -> timestampValue bigint -> ); Query OK, 0 rows affe