MySQLでタイムスタンプから日付を抽出する方法をわかりやすく解説
MySQLでタイムスタンプから日付部分だけを取り出すには?
MySQLでタイムスタンプ(timestamp)型の値から日付部分のみを選択・取得したい場合は、組み込み関数の DATE() を使用します。DATE() 関数にタイムスタンプの値を渡すと、時刻部分が取り除かれた「YYYY-MM-DD」形式の日付が返されます。
ここからは、実際のテーブル作成からデータ取得までの手順をサンプルとともに見ていきましょう。
1. サンプルテーブルを作成する
まずは練習用のテーブルを作成します。Id、Title、そしてtimestamp型のBatchTimeカラムを持つテーブルです。
mysql> create table DemoTable697(
Id varchar(100),
Title varchar(100),
BatchTime timestamp
);
Query OK, 0 rows affected (0.78 sec)
2. テーブルにレコードを挿入する
次に、INSERT文を使ってサンプルデータを登録します。
mysql> insert into DemoTable697 values('10','Java','2019-01-21 10:34:56');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable697 values('11','Spring','2019-03-11 11:14:16');
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable697 values('12','Hibernate','2019-07-21 12:04:00');
Query OK, 1 row affected (0.18 sec)3. 登録したレコードを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable697;
実行結果は以下の通りです。
+------+-----------+---------------------+
| Id | Title | BatchTime |
+------+-----------+---------------------+
| 10 | Java | 2019-01-21 10:34:56 |
| 11 | Spring | 2019-03-11 11:14:16 |
| 12 | Hibernate | 2019-07-21 12:04:00 |
+------+-----------+---------------------+
3 rows in set (0.00 sec)
BatchTimeカラムには「日付 + 時刻」の形式でデータが格納されているのが確認できます。
4. DATE()関数を使って日付だけを取得する
それが本題のクエリです。タイムスタンプから日付部分だけを取り出すには、次のように DATE() 関数を使用します。
mysql> select Title,DATE(BatchTime) AS OnlyDate from DemoTable697 where Id='10';
実行結果:
+-------+------------+
| Title | OnlyDate |
+-------+------------+
| Java | 2019-01-21 |
+-------+------------+
1 row in set (0.00 sec)
補足:DATE()関数のポイント
DATE()関数は、引数に渡されたdatetime型やtimestamp型の値から時刻を切り捨て、日付部分のみを返します。- AS句を使うことで、結果セットのカラム名を「OnlyDate」のようなわかりやすい名前に変更できます。
- WHERE句での日付比較にも活用できます。例えば「特定の日付と一致するレコードを検索したい」場合、タイムスタンプ列を直接比較すると時刻まで一致しないとヒットしませんが、
WHERE DATE(BatchTime) = '2019-01-21'のように書けば日付だけで絞り込めます。
このように、MySQLでタイムスタンプから日付を抽出するのは非常にシンプルです。DATE() 関数を覚えておくと、日別の集計や検索などさまざまな場面で役立ちます。
-
MySQLでFROM句なしのSELECTを使う方法
FROM句を省略したSELECT文とは?通常、SELECT文におけるFROM句は、データを取得する対象となるテーブルへの参照を示します。しかし、参照すべきテーブルが存在しないケースでは、FROM句を省略してSELECT文を実行することが可能です。言い換えると、SELECTは「テーブルを一切参照せずに計算された行」を取得するためにも利用できるのです。これは、関数の実行結果やユーザー定義変数の値を手軽に確認したい場合などに非常に便利です。例1:文字列関数の実行結果を取得する次の例では、CONCAT_WS()関数を使って文字列を連結しています。FROM句がないにもかかわらず、問題なく結果を返します。
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected