您好,我有一个关于 MySQL 5 中的查询的问题。我想做的是检查一个名为 created 的日期时间字段,看看今天是否是从该日期算起的 3 个月间隔。
如果创建时间是 2013 年 7 月 1 日 12:34,并且每天运行此查询,则第一次返回此行是在 2013 年 10 月 1 日,第二次是在 2014 年 1 月 1 日,依此类推.
要检查今天是否恰好是创建后的 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
提前致谢!
最佳答案
你可以做
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 日,具体取决于它是否是闰年。
关于mysql - 检查日期字段是否是 MySQL 5 中间隔的倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17683401/