CURDATE()在当前工作月之前返回的问题

时间:2013-06-01 14:05:01

标签: mysql

不确定为什么此查询不会返回并在当前月份之前获取记录。它上个月工作正常,然后今天点击,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)

他们上个月都工作正常。刚刚上个月启动了网站,因此无法在今天之前看到“新月”问题。

2 个答案:

答案 0 :(得分:2)

而不是

CURDATE() - 8

使用

CURDATE() - INTERVAL 8 DAY

DATE_ADD(CURDATE(), INTERVAL -8 DAY)

CURDATE()的值取决于您使用它的上下文 - 当您尝试向其添加数字时,它将作为数字。 MySQL documentation for CURDATE提到了数字和字符串用法的例子。

答案 1 :(得分: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) 

试一试。它应该适合你。