1

不确定为什么此查询不会返回并获取当前月份之前的记录。上个月它工作得很好,然后今天是 6 月 1 日,它不会检索上个月的记录。

过去 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)

上个月他们都工作得很好。上个月刚刚启动该站点,因此在今天之前无法看到“新月份”问题。

4

2 回答 2

2

代替

CURDATE() - 8

利用

CURDATE() - INTERVAL 8 DAY

或者

DATE_ADD(CURDATE(), INTERVAL -8 DAY)

CURDATE() 的值取决于您使用它的上下文 - 当您尝试向其添加一个数字时,它充当一个数字。CURDATE的MySQL 文档通过数字和字符串使用示例提到了这一点。

于 2013-06-01T14:08:10.670 回答
1

您应该尝试改用间隔关键字。

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) 

试试看。它应该适合你。

于 2013-06-01T14:11:45.463 回答