データベースに限った話ではありませんが、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 では直感的な記述方法で過去や未来の日時を取得できます。分かりやすさは大切なことだと思います。