2012-10-17 86 views
0

我不能得到這個權利,我仍然在使用連接,所以它可能是錯誤的。我有3個數據表和1個「摘要」表,它充滿了我提交的值id。SUM查詢DATETIME CURDATE()

我想彙總來自2個不同表格的值ID列,並將它們與當前日期和用戶相關聯。它確實,但僅限於昨天?我需要它將查詢更改爲當天。我試圖在那裏獲得CURDATE(),但我顯然做得不對。

SELECT U.user_name, SUM(T.cut_timetotal) AS sum_time, SUM(C.cuts_total) AS sum_cuts, DATE(S.submit_date) AS date 
FROM summary S 
JOIN cut_info C ON S.cuts_id = C.cuts_id 
JOIN users U ON U.user_id = S.user_id 
JOIN timeT ON T.time_id = S.time_id 
GROUP BY U.user_name 

回答

0

這應該爲您尋求答案:

SELECT U.user_name, SUM(T.cut_timetotal) AS sum_time, SUM(C.cuts_total) AS sum_cuts, DATE(S.submit_date) AS date 
FROM summary S 
JOIN cut_info C ON S.cuts_id = C.cuts_id 
JOIN users U ON U.user_id = S.user_id 
JOIN timeT ON T.time_id = S.time_id 
WHERE S.submit_date BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY 
GROUP BY U.user_name 

使用

S.submit_date BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY 

優於

DATE(S.submit_date) = CURDATE() 

,因爲前者會使用索引,如果發現,後者不會。

+0

試過並得到:「#1054 - 'where子句'中的未知列'CURDATE'」 – Mike

+0

我也嘗試了WHERE S.submit_date = CURDATE(),但是我什麼都沒有返回。 (我的submit_date被設置爲DATETIME格式)。 – Mike

+0

賓果..工作!謝謝! 「WHERE S.submit_date BETWEEN CURDATE()和CURDATE()+ INTERVAL 1天」 – Mike