Mysql:如何根据每半小时的时间戳将数据聚合成几天?
这个问题听起来比可能的要复杂。我有一个非常简单的带有php时间戳(只是整数,不是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
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中。