Php 使用SUM时的MySQL分组日期时间
我使用这个MySQL查询在15分钟的分组中添加流量记录Php 使用SUM时的MySQL分组日期时间,php,mysql,datetime,Php,Mysql,Datetime,我使用这个MySQL查询在15分钟的分组中添加流量记录 SELECT SUM(bytes), ROUND(UNIX_TIMESTAMP(timestamp_end)/(15 * 60)) AS timekey FROM acct_v9 GROUP BY timekey 我的“timestamp\u end”列存储为datetime,但是,当我尝试使用FROM\u UNIXTIME将此查询转换回datetime时,我一直在获取1970年的日期。如果对时间戳进行除法取整
SELECT SUM(bytes), ROUND(UNIX_TIMESTAMP(timestamp_end)/(15 * 60)) AS timekey
FROM acct_v9
GROUP BY timekey
我的“timestamp\u end”列存储为datetime,但是,当我尝试使用
FROM\u UNIXTIME
将此查询转换回datetime时,我一直在获取1970年的日期。如果对时间戳进行除法取整,则无法获得有效的时间戳。您必须将其乘以(15*60):
SELECT SUM(bytes),DATE_FORMAT(FROM_UNIXTIME(timestamp_end), '%e %b %Y') AS timekey
FROM acct_v9 GROUP BY DATE_FORMAT(FROM_UNIXTIME(timestamp_end), '%e %b %Y')
通过此查询,您将获得有效的时间戳
要直接获取格式化日期,可以使用以下查询:
SELECT COUNT(*),
SUM(bytes),
FROM_UNIXTIME
(
ROUND(UNIX_TIMESTAMP(timestamp_end)/(15 * 60))*(15*60)
,'%Y-%m-%d %H:%i:%s'
) AS timekey
FROM acct_v9
GROUP BY timekey
显然,您可以使用所需的格式更改
%Y-%m-%d%H:%i:%s
。FROM\u UNIXTIME不是用于将时间戳转换为日期的吗?我的“timestamp_end”列被插入到已经使用FROM_UNIXTIME的数据库中。然后,ROUND函数将其转换回时间戳进行计算。我正试图把它恢复到插入数据库的数字日期格式。谢谢,这得到了我想要的结果。我还在想是否需要额外的乘法步骤?
SELECT COUNT(*),
SUM(bytes),
FROM_UNIXTIME
(
ROUND(UNIX_TIMESTAMP(timestamp_end)/(15 * 60))*(15*60)
,'%Y-%m-%d %H:%i:%s'
) AS timekey
FROM acct_v9
GROUP BY timekey