2013-06-01 24 views
1

不確定爲什麼此查詢不會返回並在當前月份之前獲取記錄。它在上個月運行良好,然後在今天6月1日點擊,並且它不會檢索上個月的記錄。問題CURDATE()在當前工作月前返回

最近7天

SELECT SUM(sum) AS sum FROM cl_work_orders WHERE user_id = ? AND workorder_date <= CURDATE() AND workorder_date > (CURDATE() - 8) 

最近30天

SELECT SUM(sum) AS sum FROM cl_work_orders WHERE user_id = ? AND workorder_date <= CURDATE() AND workorder_date > (CURDATE() - 31) 

昨天

SELECT SUM(sum) AS sum FROM cl_work_orders WHERE user_id = ? AND workorder_date < CURDATE() AND workorder_date > (CURDATE() - 2) 

他們無一不精上個月的工作。上個月剛剛啓動了該網站,因此無法在今天之前看到「新月」問題。

回答

2

而不是

CURDATE() - 8 

使用

CURDATE() - INTERVAL 8 DAY 

DATE_ADD(CURDATE(), INTERVAL -8 DAY) 

CURDATE()的值取決於上下文中,您使用它 - 因爲你正在嘗試給它添加一個數字,它就像一個數字。 MySQL documentation for CURDATE提到了數字和字符串用法的例子。

+0

太棒了!這樣可行!謝謝。我必須等待7分鐘才能接受你的答案。 –

1

您應該嘗試使用Interval Keyword代替。

SELECT SUM(sum) AS sum 
FROM cl_work_orders 
WHERE user_id = ? 
AND workorder_date < CURDATE() 
AND workorder_date > DATE_SUB(CURDATE(),INTERVAL 1 Month) 

SELECT SUM(sum) AS sum 
FROM cl_work_orders 
WHERE user_id = ? 
AND workorder_date < CURDATE() 
AND workorder_date > DATE_SUB(CURDATE(),INTERVAL 8 DAY) 

試試看。它應該適合你。