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