Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用MySQL查询仅对当月按来源ID进行金额合计_Php_Mysql_Sum - Fatal编程技术网

Php 如何使用MySQL查询仅对当月按来源ID进行金额合计

Php 如何使用MySQL查询仅对当月按来源ID进行金额合计,php,mysql,sum,Php,Mysql,Sum,我在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查询工作正常,但我只想获取当前月份,而不

我在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查询工作正常,但我只想获取当前月份,而不是前一个月。

使用
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)

如果将当前月份定义为今天日期的月份,则您甚至不需要在此处进行汇总:

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;

我将向查询中添加两个日期参数,如下所示:

SELECT amount FROM table WHERE for_date>='2019-01-01' AND for_date<='2019-01-31'
从表格中选择金额,其中for_date>='2019-01-01'和for_date尝试此查询

SELECT SUM(amount) amountSum FROM Flow WHERE source='1' GROUP BY DATE_FORMAT(for_date, "%m-%y")
这将按月/年进行汇总和分组,以防您的数据库增长并有多个年份。

试试这个

     SELECT SUM(amount) FROM Flow WHERE source='1' AND MONTH(for_date) = MONTH(CURRENT_DATE()) AND YEAR(for_date)=YEAR(CURRENT_DATE());
group by有什么用?如果您只想要当前月份?你为什么使用分组方式?
运行上面的查询不使用group by…

OP从2019年2月开始向表中添加新数据时会发生什么情况?这可以写入索引吗?很遗憾,我不知道。此查询将给出当前月份。。。但它会把所有的月份和年份都分组……这里分组有什么用呢?这项工作对我来说太完美了。我在php函数中使用。谢谢。@prasanth在这种情况下告诉我,对于当前月份,请从Flow GROUP按月选择sumDel(对于u日期)@prasanth这里我只想对当前月份进行求和。从Flow GROUP BY month(对于_date)@Martin use with where condition
month(对于_date)=month(now())和year(对于_date)=year(now())
,依次选择SUM(当source='21'时为CASE,当source='22'时为amount,则为amount,否则为0 END)sumDel
SELECT SUM(amount) amountSum FROM Flow WHERE source='1' and DATE_FORMAT(for_date,'%Y-%m') = DATE_FORMAT(CURRENT_DATE(),'%Y-%m')