平成30/ 2018-10-24 06:42
MYSQL/to_days 日数 日付 計算 比較

日付どおしの日数計算は、to_days を使う。
to_days は、mysql で設定されている日付の開始日から何日経っているかを取得できる関数。

select to_days(current_date) - to_days(date('2012-07-17 10:00:00'));
+--------------------------------------------------------------+
| to_days(current_date) - to_days(date('2012-07-17 10:00:00')) |
+--------------------------------------------------------------+
|                                                           28 |
+--------------------------------------------------------------+

日数なので時刻含んでも同じ結果になる。なので時刻気にする必要ない。

select to_days('2012-07-17 10:00:00');
+--------------------------------+
| to_days('2012-07-17 10:00:00') |
+--------------------------------+
|                         735066 |
+--------------------------------+
1 row in set (0.00 sec)

select to_days('2012-07-17');
+-----------------------+
| to_days('2012-07-17') |
+-----------------------+
|                735066 |
+-----------------------+
1 row in set (0.00 sec)


# to_daysしないと、以下のような結果になる // current_date = 2012-08-14 のとき

select current_date - date('2012-07-17 10:00:00');
+--------------------------------------------+
| current_date - date('2012-07-17 10:00:00') |
+--------------------------------------------+
|                                         97 |
+--------------------------------------------+


# 3か月前のデータ取得したい場合
select
    id, created,
    date_add(current_date(), interval -3 month),
    to_days(date(created)),
    to_days( date_add(current_date(), interval -3 month)),
    to_days(date(created)) - to_days( date_add(current_date(), interval -3 month))
from
    Sample
where
    isDeleted = 0 and
    (to_days(date(created)) - to_days( date_add(current_date(), interval -3 month))) < 0


( Thanks. )
MySQL 編16 - 日付関数、システム日付、切捨、日付差、日付加算、書式
http://webcache.googleusercontent.com/search?q=cache:LEUQjDtn2ccJ:homepage2.nifty.com/sak/w_sak3/doc/sysbrd/mysql_16.htm+&cd=6&hl=ja&ct=clnk&gl=jp

11.5. 日付時刻関数
http://dev.mysql.com/doc/refman/5.1/ja/date-and-time-functions.html