動かざることバグの如し

近づきたいよ 君の理想に

MySQLでn分前, n時間前, n日後の日時を取得する

MySQLではプログラミング言語のように日時に四則演算子である、+や-を使って計算することができる。あとはどのくらいの期間の指定にINTERVALを使ってあげればおk

確認環境

1時間前の日時を取得する

SELECT NOW() - INTERVAL 1 HOUR;

7日後の日時を取得する

SELECT NOW() + INTERVAL 7 DAY;

whereでも使用可能

INTERVALはwhere句でも使用可能。以下の例はpostsのうち、現在時刻から5日以内のものを取得するSQL

SELECT * FROM posts WHERE created_at > NOW() + 5 DAY;

INTERVALで使用できる単位一覧

複数形ではないので注意

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • YEAR

参考リンク