我想计算表中的用户,他们的订阅将在一个月(30天)内到期。这是我的代码:
USER_DB
id name exp_date
1 John 2013-03-01
2 Alice 2013-02-25
3 Ken 2013-01-10
4 Elise 2013-04-11
5 Bruce 2013-03-14
根据上面的DB。应该有3个人的订阅即将到期 - 约翰,爱丽丝和布鲁斯。 我不希望肯被视为,因为他不想订阅更多。
这是我的MySQL代码:
SELECT count(id) AS exp_pax,
datediff(exp_date,now()) AS day_left
FROM labour_db
WHERE day_left<=30
嗯,代码确实只选择了一天中总和小于30但不计算的行。所以,请你的家伙建议我。
此致
答案 0 :(得分:1)
如果是这种情况,则需要添加条件,以检查exp_date
是否小于今天。
SELECT COUNT(*) totalCount
FROM user_db
where exp_date <= timestampadd(day, 30, now()) AND
exp_date > NOW()
答案 1 :(得分:1)
如果要计算所有记录,其中(1)到期日期在现在的30天内,(2)到期日期不在现在之前,则使用
SELECT count(*) AS exp_pax
FROM user_db
WHERE exp_date<=timestampadd(day, 30, now())
AND exp_date >= now();
答案 2 :(得分:0)
删除group by id
以获取您的点数。
Count将按预期汇总行,但如果与group by
子句结合使用,则会计算每个“组”。例如,您可以有用地按到期日分组。