DATE型の日付差を求めるSQL文

| コメント(0) | トラックバック(0)
MySQL(4.1.1以降)にて、2つのDATE型の値の差を求めるクエリ。
(※'2009-1-1'と'2009-1-8'であれば日数差は7。)

  2009-1-1から7日以上経過したレコードを返す場合。
-------------------------------------------------------------------------------------------------------
#$current = 本日の日付のDATE型

SELECT * FROM sample_table WHERE DATEDIFF('$crrent', '2009-1-1') >= 7

もしくは、

SELECT * FROM sample_table WHERE DATEDIFF('CURRENT_DATE()', '2009-1-1') >= 7
-------------------------------------------------------------------------------------------------------



 上記にhh:mm:ssを追加した場合
-------------------------------------------------------------------------------------------------------

SELECT * FROM sample_table WHERE DATEDIFF('$crrent 00:00:00', '2009-1-1 23:59:59') >= 7

または、

SELECT * FROM sample_table WHERE DATEDIFF('CURRENT_DATE() CURRENT_TIME()', '2009-1-1 23:59:59') >= 7

※結果は最初と同じ
-------------------------------------------------------------------------------------------------------




ステップメールの配信などに応用できる。

例)
user_table
+−−−−+−−−−−−−−−−−−−−−−−−+−−−−−−−−−−+−−−−−−−−−−−+
| ID  | MAIL        |  entry   | next_story |
+−−−−+−−−−−−−−−−−−−−−−−−+−−−−−−−−−−+−−−−−−−−−−−+
| 01  | hogehoge@hoge.jp |  2009-1-1 | 2     |
+−−−−+−−−−−−−−−−−−−−−−−−+−−−−−−−−−−+−−−−−−−−−−−+
     ・
     ・
     ・

登録日から指定日数経過した読者のレコードを求める例

SELECT * FROM user_table WHERE DATEDIFF('$current', entry) >= $day_interval and next_story=$tmp2 ORDER BY entry




その他日付関係操作の詳しい解説はこちら
http://www.limy.org/program/db/mysql/mysql_operators.html



トラックバック(0)

トラックバックURL: http://www.igreks.jp/blog/mt-tb.cgi/86

コメントする