MySQL使用SUM分组日期时间

时间:2016-03-14 21:23:41

标签: php mysql datetime

我正在使用此MySQL查询在15分钟分组中添加流量记录。

    SELECT SUM(bytes), ROUND(UNIX_TIMESTAMP(timestamp_end)/(15 * 60)) AS timekey 
      FROM acct_v9 
  GROUP BY timekey

我的'timestamp_end'列存储为日期时间,但是当我尝试将此查询转换回日期时间时,使用FROM_UNIXTIME我会在1970年获取日期。

2 个答案:

答案 0 :(得分:1)

 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')

答案 1 :(得分:1)

划分和舍入时间戳时,您无法获得有效的时间戳。你必须将它重新乘以(15 * 60):

    SELECT COUNT(*), 
           SUM(bytes), 
           ROUND(UNIX_TIMESTAMP(timestamp_end)/(15 * 60))*(15*60) AS timekey
      FROM acct_v9 
  GROUP BY timekey

通过此查询,您将获得有效的时间戳。

要直接获取格式化日期,您可以使用此查询:

   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

sqlFiddle demo

显然,您可以使用所需格式更改%Y-%m-%d %H:%i:%s