我希望选择前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
任何想法? 感谢
答案 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')