MySQLで1日前や3ヶ月後などの日時を指定してデータを取りたいことがあると思います。この記事ではMySQLのINTERVALを使って、現在の時刻と指定した日や月などを計算した条件の指定方法を紹介します。
Contents
日付を今の時間と計算した指定方法の例
例としてここでは対象をユーザーテーブル(users)日付の入っているカラムを登録日時(created)とします。
1日前の指定
1日前より大きい(1日以内)のデータの取得例。
1 | SELECT * FROM users WHERE created > (NOW() - INTERVAL 1 DAY); |
3ヶ月前の指定
3ヶ月前より大きい(3ヶ月以内)のデータの取得例。
1 | SELECT * FROM users WHERE created > (NOW() - INTERVAL 3 MONTH); |
2年前の指定
2年前より大きい(2年以内)のデータの取得例。
1 | SELECT * FROM users WHERE created > (NOW() - INTERVAL 2 YEAR); |
未来を指定する場合
「-」になっているのを「+」に変えるだけで何日後とか何分後とかになります。
MySQLのINTERVAL
指定の方法
1 | プラスまたはマイナス INTERVAL 数値 単位 |
指定できる時間の単位
- MICROSECOND(マイクロ秒)
- SECOND(秒)
- MINUTE(分)
- HOUR(時間)
- DAY(日)
- WEEK(週)
- MONTH(月)
- YEAR(年)
まとめ
現在の日時をNOWで取得してINTERVALで指定した時間を計算することで、n時間前、n日前、n年後などの日時を指定してデータを取ることができます。