Mysql:如何根据每半小时的时间戳将数据聚合成几天?

Mysql:如何根据每半小时的时间戳将数据聚合成几天?,mysql,aggregate-functions,Mysql,Aggregate Functions,这个问题听起来比可能的要复杂。我有一个非常简单的带有php时间戳(只是整数,不是MySQL日期字段)和浮点值的表 id | timestamp | values | 这些值以半小时的间隔存储,因此每个时间戳增加半小时 我想在一个查询中将一周的数据聚合为几天,因此响应看起来像这样(1317596400=2011年10月3日) 如果时间戳为00:00或12:00,则为标识日期的任何内容 有什么想法吗 更新: 我取得了一些进步 SELECT FROM_UNIXTIME(timestamp) as s

这个问题听起来比可能的要复杂。我有一个非常简单的带有php时间戳(只是整数,不是MySQL日期字段)和浮点值的表

id | timestamp | values |
这些值以半小时的间隔存储,因此每个时间戳增加半小时

我想在一个查询中将一周的数据聚合为几天,因此响应看起来像这样(1317596400=2011年10月3日)

如果时间戳为00:00或12:00,则为标识日期的任何内容

有什么想法吗

更新:

我取得了一些进步

SELECT FROM_UNIXTIME(timestamp) as stamp, sum(data) FROM energy 
WHERE
timestamp >= 1317423600
AND
timestamp <= 1320105600
GROUP BY (  DATE( stamp ) ) 
选择FROM_UNIXTIME(时间戳)作为戳记,从能量中求和(数据)
哪里
时间戳>=1317423600
及

时间戳您可以将时间戳转换为日期,将日期截断为午夜,然后将其转换回时间戳值。有点像这样:

select unix_timestamp(date(from_unixtime(timestamp))) as "phpDate",
sum(someValues) as "values"
from myTable
group by phpDate;

希望我在这里找到了正确的方向

您可以将时间戳转换为日期,将日期截断为午夜,然后将其转换回时间戳值。有点像这样:

select unix_timestamp(date(from_unixtime(timestamp))) as "phpDate",
sum(someValues) as "values"
from myTable
group by phpDate;

希望我在这里找到了正确的方向

我认为最困难的部分是将整数解析为字符串中的日期


你可以这样做(从UNIXTIME(1317596400))我认为最困难的部分是将整数解析为字符串中的日期


您可以这样做(从UNIXTIME(1317596400))如果您的天数是UTC天数,您可以
分组(时间戳-时间戳%86400)

简短的公式将时间戳向下舍入到最接近的全天,尽管是从UTC 00:00开始的全天


这避免了将UNIX历元转换为
DATETIME
值。

如果您的天数是UTC天数,您可以
分组方式(时间戳-时间戳%86400)

简短的公式将时间戳向下舍入到最接近的全天,尽管是从UTC 00:00开始的全天


这避免了从UNIX历元到日期时间值的转换。

将时间戳转换为MySQL可以使用的值,然后按日期对结果进行分组

SELECT FROM_UNIXTIME(timestamp) as stamp, sum(data) FROM energy 
WHERE
timestamp >= 1317423600
AND
timestamp <= 1320105600
GROUP BY (  DATE( stamp ) ) 
选择FROM_UNIXTIME(时间戳)作为戳记,从能量中求和(数据)
哪里
时间戳>=1317423600
及

时间戳将时间戳转换为MySQL可以使用的内容,然后按日期对结果进行分组

SELECT FROM_UNIXTIME(timestamp) as stamp, sum(data) FROM energy 
WHERE
timestamp >= 1317423600
AND
timestamp <= 1320105600
GROUP BY (  DATE( stamp ) ) 
选择FROM_UNIXTIME(时间戳)作为戳记,从能量中求和(数据)
哪里
时间戳>=1317423600
及

时间戳关于时间戳四舍五入的好提示。很高兴知道。关于时间戳舍入的好提示。很高兴知道,“从大学时代”在这里真的很有帮助。然而,似乎不需要将其封装在DATE中。“FROM_UNIXTIME”在这里真的很有帮助。然而,似乎不需要将其封装在DATE中。