不确定为什么此查询不会返回并在当前月份之前获取记录。它上个月工作正常,然后今天点击,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)
他们上个月都工作正常。刚刚上个月启动了网站,因此无法在今天之前看到“新月”问题。
答案 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)
试一试。它应该适合你。