选择前3个月

时间:2013-01-07 16:22:06

标签: mysql datediff period

我希望选择前3个月的门票。通过计算前3个月。 我看到这篇文章: https://stackoverflow.com/questions/7268896/calculate-3-month-period-using-mysql

但它似乎不起作用。 这是我的查询

select `created`, datediff( now(), `created`) as period , now()
from tag
having period%90=0;

但这是返回日期,例如

created             period  now()  
2009-10-25 12:42:15 1170    2013-01-07 10:15:37 

任何想法? 感谢

2 个答案:

答案 0 :(得分:1)

%是模数运算符,因此将周期除以90并且是测试的余数...即。 0,90,180,270,...都将返回0。

我认为你需要

period < 90

过去90天内的所有参赛作品。如果你只想要30天,那么只有90%的时间可以做到。

答案 1 :(得分:1)

您可以使用DATE_SUB()获取上一个日期。在您的情况下,您需要使用DATE_SUB(NOW(), INTERVAL 3 MONTH)

SELECT FROM tag WHERE DATE_SUB(NOW(), INTERVAL 3 MONTH) < created


修改按照以下要求为DATE_SUB()添加了替代

或者,您可以使用以下内容(可能有更简洁的方法来执行此操作,我目前无法想到):

STR_TO_DATE(CONCAT(DAY(NOW()), '-', MONTH(NOW()) + IF(MONTH(NOW()) > 3, -3, +9), '-', YEAR(NOW()) + IF(MONTH(NOW()) > 3, 0, -1)), '%e-%m-%Y')