0

我正在寻找前 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 

有任何想法吗?谢谢

4

2 回答 2

1

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

我想你需要

period < 90

过去 90 天内的所有条目。如果您只想要 30 天,那么 period = 90 就可以了。

于 2013-01-07T16:25:52.660 回答
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')

于 2013-01-07T16:26:00.377 回答