奇怪的MySQL CURDATE()行为(可能受CAST影响?)
我想知道过去5/10/15天每天创建的用户数量,按日期分组 以下是我过去5天用于datewise注册的查询:奇怪的MySQL CURDATE()行为(可能受CAST影响?),mysql,datetime,Mysql,Datetime,我想知道过去5/10/15天每天创建的用户数量,按日期分组 以下是我过去5天用于datewise注册的查询: 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
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
为什么?!这是怎么回事
顺便说一句,任何其他表也会发生同样的情况
编辑:
给出以下结果:
2013年3月5日12:00:00上午20130300 20130290 20130306 20130305
我不明白这是怎么计算出来的。CURDATE()+1表示明天的日期,CURDATE()-5表示我无法解码的值。请尝试使用以下方法:
CURDATE() - INTERVAL 5 DAY
MySQL不支持这种日期算法。为此,您需要使用
date\u add()
(或date\u sub()
)
CURDATE() - INTERVAL 5 DAY