我有一个扩展数据库,但它看起来像:
|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|
...
我使用此查询获取指定办公室的实际月份金额总和:
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'
1条答案
按热度按时间gt0wga4j1#
mysql month函数只返回1-12,一月到十二月;如果你得到的太多,我怀疑这是因为你的数据集包含的不仅仅是2018年的日期。试着在where子句中包含一个年份比较,以及比较月份。