1

嗨,我有一个关于 MySQL 5 中的查询的问题。我要做的是检查一个名为 created 的日期时间字段,看看今天是否距离该日期有 3 个月的间隔。

如果创建时间为 2013-07-01 12:34,并且该查询每天运行,则第一次返回该行是 2013-10-01,第二次是 2014-01-01,以此类推。

要检查今天是否正好是 X 个月的创建时间,我会这样做:

DATE_ADD(DATE(a.created), INTERVAL 3 MONTH) = CURDATE() 

我已经阅读了这里的日期/时间函数:http: //dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html但我没有看到任何函数可以做什么我在找。

有没有更好或更准确的方法来做到这一点,然后是:

DATEDIFF(CURDATE(), DATE(a.created)) % 90 = 0

提前致谢!

4

1 回答 1

2

你可以做

TIMESTAMPDIFF(MONTH,CURDATE(), DATE(a.created)) %3 =0 
    AND DAY(a.created) % DAY(LAST_DAY(CURDATE())) = DAY(CURDATE())

这保证了它3个月的时差和当月的日期是一样的。它还使用 % last_day 处理该月不存在日期的事件。例如,如果事件是 11 月 30 日,由于没有 2 月 30 日,它将匹配 3 月 2 日或 1 日,具体取决于它是否是闰年。

于 2013-07-16T18:42:54.317 回答