我在MySQL中有此表
source amount for_date
1 100 2019-01-15
1 200 2019-01-16
1 200 2019-02-16
2 350 2019-02-14
SELECT SUM(amount) amountSum FROM Flow WHERE source='1' GROUP BY month(for_date)
此MySQL查询有效,但我只想获取当前月份,而不是前一个月。
答案 0 :(得分:0)
使用where
条件过滤月份
仅一个月
SELECT SUM(amount) amountSum FROM Flow WHERE source='1' AND month(for_date)=month(now()) GROUP BY month(for_date)
带年份
SELECT SUM(amount) amountSum FROM Flow WHERE source='1' AND month(for_date)=month(now()) AND year(for_date)=year(now()) GROUP BY month(for_date)
答案 1 :(得分:0)
如果您将当前月份定义为今天的月份,那么您甚至不需要在此处进行汇总:
SELECT SUM(amount) amountSum
FROM Flow
WHERE
source = '1' AND
DATE_FORMAT(for_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m');
如果您将当前月份定义为表中的最近月份,那么我们可以在当前查询中使用LIMIT
:
SELECT SUM(amount) amountSum
FROM Flow
WHERE source = '1'
GROUP BY DATE_FORMAT(for_date , '%Y-%m')
ORDER BY DATE_FORMAT(for_date , '%Y-%m') DESC
LIMIT 1;
答案 2 :(得分:0)
我会像这样向查询添加两个日期参数:
SELECT amount FROM table WHERE for_date>='2019-01-01' AND for_date<='2019-01-31'
答案 3 :(得分:0)
尝试此查询
SELECT SUM(amount) amountSum FROM Flow WHERE source='1' GROUP BY DATE_FORMAT(for_date, "%m-%y")
这将按月/年进行汇总和分组,以防您的数据库不断增长并具有多个年份。
答案 4 :(得分:0)
尝试
SELECT SUM(amount) FROM Flow WHERE source='1' AND MONTH(for_date) = MONTH(CURRENT_DATE()) AND YEAR(for_date)=YEAR(CURRENT_DATE());
答案 5 :(得分:0)
SELECT SUM(amount) amountSum FROM Flow WHERE source='1' and DATE_FORMAT(for_date,'%Y-%m') = DATE_FORMAT(CURRENT_DATE(),'%Y-%m')
group by的用途是什么?如果只想要当月?为什么使用分组依据? 运行上面的查询,没有使用group by ...