PHP MySQL,基于日期时间行的行总和
我试图根据日期时间行计算人数总和 我的桌子是这样的:PHP MySQL,基于日期时间行的行总和,php,mysql,datetime,sum,Php,Mysql,Datetime,Sum,我试图根据日期时间行计算人数总和 我的桌子是这样的: id | date | person | ---+-------------------+--------+ 1 |2013-12-26 00:00:00| 3 | ---+-------------------+--------+ 2 |2013-12-26 00:00:00| 2 | ---+-------------------+--------+ 3 |2013-12-26
id | date | person |
---+-------------------+--------+
1 |2013-12-26 00:00:00| 3 |
---+-------------------+--------+
2 |2013-12-26 00:00:00| 2 |
---+-------------------+--------+
3 |2013-12-26 00:00:00| 3 |
---+-------------------+--------+
4 |2018-10-21 00:00:00| 3 |
---+-------------------+--------+
我想让我的查询做的是:根据日期对所有人员求和。但我认为我的问题不是询问它自己(或者可能是),而是日期时间。我有点像
$date = "26.12.2013";
$date = strtotime(date("d.m.Y", strtotime($date)));
$date = date("Y-m-d", $date);
$query= "SELECT '$date', SUM('person') totalperson FROM table_name WHERE date='$date' GROUP BY '$date'";
但返回的数字是2016年,预计为8:)
我希望我的问题足够清楚
SELECT
date,
SUM(person) totalperson
FROM table_name
WHERE DATE(date) = '$date'
GROUP BY date
使用DATE()函数
您正在日期时间列中提供日期字符串
SUM(`person`)
使用DATE()函数
您正在日期时间列中提供日期字符串
SUM(`person`)
使用反勾号作为列名,这是对字符串的求和
使用反勾号作为列名,您正在使用字符串您使用什么数据库引擎 无论如何,这应该是可行的:
$date = "2013-12-26 00:00:00";
$query = "
SELECT date, SUM(person) totalperson
FROM table_name WHERE date='$date'
GROUP BY date
";
你用什么数据库引擎 无论如何,这应该是可行的:
$date = "2013-12-26 00:00:00";
$query = "
SELECT date, SUM(person) totalperson
FROM table_name WHERE date='$date'
GROUP BY date
";
无法测试它是否会有帮助,但不会对列值进行
group by
,但列名group by date
如果不使用`around its,列名date可能会导致问题。按静态值分组没有任何意义–您希望按列分组,而不是按特定值分组。(如果您想通过值将结果集限制为某个特定的日期,这就是WHERE子句的作用。)我知道,几小时前我确实有正确的查询,但我回显了错误的查询结果。因为查询结果是数组,其中[0]是日期,[1]是实际人数:P我应该第一次计算出结果是2016年,因为2013年(年)+3是2016年。无法测试它是否有帮助,但不在列值上按分组
,但列名按日期分组
如果不使用`环绕它,列名日期可能会导致问题按静态值分组没有任何意义–您希望按列分组,而不是按特定值分组。(如果您想通过值将结果集限制为某个特定的日期,这就是WHERE子句的作用。)我知道,几小时前我确实有正确的查询,但我回显了错误的查询结果。因为查询结果是数组,其中[0]是日期,[1]是实际人数:P我应该第一次计算出结果是2016年,因为2013年+3年是2016年。谢谢,这有助于=)加上我回显了错误的查询结果。结果是日期和总人数。谢谢,这有助于=)加上我回显了错误的查询结果。结果是日期和总人数。