0
我想知道每天创建的用户数,按日期分组,最后5/10/15天。奇怪的MySQL CURDATE()行为(可能受到CAST的影响?)
这里是我用于datewise注册等最后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;
给出以下结果: 2013年3月5日12:00:00 AM 20130300 20130290 20130306 20130305
我不明白这是如何进行计算。虽然CURDATE()+ 1给出了明天的日期,但CURDATE() - 5给了我一个我无法解码的值。
MySQL不支持这种日期计算的。你需要使用'date_add()'(或'date_sub()') – 2013-03-05 12:28:39