[ MySQL ] n分前, n時間前, n日後の日付を取得する ( INTERVAL )

Pocket

データベースに限った話ではありませんが、10分前の時刻や、1か月後の日付などを求める機会は多くあります。MySQL では、四則演算のプラス・マイナス記号を使って直感的な SQL を記述して過去や未来の日時を取得することができます。

スポンサーリンク

30秒前の日時を取得する

mysql> SELECT CURRENT_TIMESTAMP - INTERVAL 30 SECOND;
+----------------------------------------+
| CURRENT_TIMESTAMP - INTERVAL 30 SECOND |
+----------------------------------------+
| 2010-12-26 12:10:31                    |
+----------------------------------------+

-- CURRENT_TIMESTAMPはシステム日時を返す

7日後の日時を取得する

mysql> SELECT CURRENT_TIMESTAMP + INTERVAL 7 DAY;
+------------------------------------+
| CURRENT_TIMESTAMP + INTERVAL 7 DAY |
+------------------------------------+
| 2011-01-02 12:12:23                |
+------------------------------------+

その他、MINUTE (分)、HOUR (時)、WEEK (週)、MONTH (月) なども指定することができます。 詳細は、「MYSQLリファレンス:日付時刻関数」を参照ください。

where句で使用する

interval は where 句でも使用できます。以下は、カラム ( test_date ) が 現在から 30分以内の日時であるレコードを取得する SQL のサンプルになります。

select * from table1 where test_date > current_timestamp + interval -30 minute

このように MySQL では直感的な記述方法で過去や未来の日時を取得できます。分かりやすさは大切なことだと思います。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *