0

我想计算表中订阅将在一个月(30 天)内到期的用户。这是我的代码:

用户数据库

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

根据上面的数据库。应该有 3 个人的订阅即将到期 - John、Alice 和 Bruce。我不希望肯被计算在内,因为他不想订阅更多。

这是我的 MySQL 代码:

SELECT count(id) AS exp_pax, 
       datediff(exp_date,now()) AS day_left 
FROM labour_db 
WHERE day_left<=30

好吧,代码确实只选择了一天总和小于 30 的行,但它不计算在内。所以请你建议我。

问候,

4

3 回答 3

1

如果是这种情况,那么您需要添加条件来检查是否exp_date小于今天。

SELECT  COUNT(*) totalCount
FROM    user_db 
where   exp_date <= timestampadd(day, 30, now()) AND
        exp_date > NOW()
于 2013-02-20T13:00:44.610 回答
1

如果要计算 (1) 到期日期在现在 30 天内和 (2) 到期日期不在现在之前的所有记录,则使用

SELECT count(*) AS exp_pax 
FROM   user_db 
WHERE exp_date<=timestampadd(day, 30, now())
       AND exp_date >= now();
于 2013-02-20T13:01:16.390 回答
0

删除group by id以获取您的计数。

正如您所料,Count 将汇总行,但是当与group by子句结合使用时,将对每个“组”进行计数。您可以有用地使用它,例如,按到期日期分组。

于 2013-02-20T12:51:40.083 回答