0

我想知道过去 5 / 10 / 15 天每天创建的用户数量,按日期分组。

这是我过去 5 天用于按日期注册的查询:

SELECT CAST(created AS DATE) as DateField , count(email) as Num 
FROM invited_users where created > curdate()-5 
GROUP BY CAST(created AS DATE);

// "created" is a datetime field
// returns 5 rows

这就像我预期的那样工作。

但是,当我将数字“5”更改为“10”或 15(或 5 以外的任何数字,在我看来)时,它不起作用!相反,它返回数据库中的所有日期!

SELECT CAST(created AS DATE) as DateField , count(email) as Num 
FROM invited_users where created > curdate()-15 
GROUP BY CAST(created AS DATE);

// returns 97 rows

为什么?!这里发生了什么?

顺便说一句,任何其他表也会发生同样的情况。

编辑:

select curdate(), curdate() -5, curdate() - 15, curdate() + 1, curdate() + 0;

给出以下结果:3/5/2013 12:00:00 AM 20130300 20130290 20130306 20130305

我不明白这是如何计算的。虽然 CURDATE()+1 给出了明天的日期,但 CURDATE() - 5 给出了一个我无法解码的值。

4

1 回答 1

1

尝试使用这样的东西:

CURDATE() - INTERVAL 5 DAY
于 2013-03-05T12:34:09.417 回答