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
(※'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

コメントする