mysql - 检查日期字段是否是 MySQL 5 中间隔的倍数

标签 mysql date

您好,我有一个关于 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/

相关文章:

php - 如何在php中从sql查询中检索单个值

java - Java 日期格式问题

Python : Comparing two times, 并在几分钟内返回

mysql - 将序数日期 (YYYYDDD) 转换为标准日期(例如 UTC = YYYYMMDD )

java - 如何在 Java 中更改 Calendar 实例的日期?

MySQL-sql服务器: consistency check

mysql - 根据 IF 语句更新另一列

mysql - 使用 case 语句优化查询

java - 如何在特定日期之前到达

php - Laravel 的嵌套评论