我有一个扩展数据库,但是看起来像:
|id|amount| office| date |
| 1| 50.00|Orlando|2018-11-05|
| 2| 20.00|Orlando|2018-11-09|
| 3| 10.00|Orlando|2018-11-09|
| 4| 80.00|Orlando|2018-11-19|
...
我使用此查询来获取指定办公室中实际月份的金额SUM:
SELECT SUM(amount) AS value
FROM pagos
WHERE MONTH(date) = MONTH(CURDATE())
AND office = 'Orlando'
但是我没有得到正确的数量(我得到的太多),我怎么知道?因为我也使用了此查询,并且获得了正确的金额:
SELECT SUM(amount) AS value
FROM pagos
WHERE date between '2018-11-01' AND '2018-11-27'
&& office = 'Orlando'
但是我需要将第一个与month(curdate())语句一起使用。 问题是,我在做什么错了?
编辑:
解决方案:排除其他年份
SELECT SUM(amount) AS value FROM pagos WHERE MONTH(date) = MONTH(CURDATE()) AND YEAR(date) = YEAR(CURDATE()) && office = 'Orlando'
答案 0 :(得分:0)
mySQL MONTH函数仅返回1到12月的1到12的范围;如果您的数据太多,我怀疑是因为您的数据集不仅包含2018年的日期。尝试在WHERE子句中包括年份比较以及月份比较。