8

我有一列包含 INT 时间戳中的测量时间,我需要按一小时的间隔对数据进行分组。我已经发现了 MySQL 函数 FROM_UNIXTIME(),但是 MySQL 中是否有内部工具可以从该函数的结果中提取小时?

4

5 回答 5

12

我想你的意思是FROM_UNIXTIME

GROUP BY
    DATE_FORMAT(FROM_UNIXTIME(time_column), '%Y %m %d %H'))
于 2013-03-11T00:18:11.907 回答
6
SELECT *
FROM table
GROUP BY DATE_FORMAT(FROM_UNIXTIME(time_col_name), '%H')

查看 MySQL 的日期文档

编辑:

DATE_FORMAT改为使用可靠地确定返回的小时的格式。请参阅DATE_FORMAT 文档注意:格式 %H 将返回格式为 00、01、... 23 的小时值。

于 2013-03-11T00:17:24.263 回答
1

就像是:

SELECT HOUR(FROM_UNIXTIME(unixCol))
FROM tbl
GROUP BY HOUR(FROM_UNIXTIME(unixCol))

HOUR将提取 UNIX 时间戳转换为日期后的小时。

请参阅文档

于 2013-03-11T00:17:25.633 回答
0

尝试将该数据库数据作为日期放入变量中,然后回显它。

$timestamp = strtotime($db_data);
echo date("m-d-Y", $timestamp);
于 2013-03-11T00:21:33.120 回答
0

我知道这是在最初的问题之后的几年,但是如果您正在处理更大的数据集,由于为查询集中的每一行调用 2 个函数,这可能需要更长的时间来执行。

通过使用一些模运算,我设法节省了几秒钟的时间

GROUP BY FLOOR(time_col/(60*60) MOD 24)

希望这可以帮助 :)

于 2016-05-09T01:23:39.507 回答