【发布时间】:2013-02-26 02:01:58
【问题描述】:
我有一列包含 INT 时间戳中的测量时间,我需要按一小时的时间间隔对数据进行分组。我已经发现了 MySQL 函数 FROM_UNIXTIME(),但是 MySQL 中有没有内部工具可以从这个函数的结果中提取小时?
【问题讨论】:
我有一列包含 INT 时间戳中的测量时间,我需要按一小时的时间间隔对数据进行分组。我已经发现了 MySQL 函数 FROM_UNIXTIME(),但是 MySQL 中有没有内部工具可以从这个函数的结果中提取小时?
【问题讨论】:
我想你的意思是FROM_UNIXTIME
GROUP BY
DATE_FORMAT(FROM_UNIXTIME(time_column), '%Y %m %d %H'))
【讨论】:
SELECT *
FROM table
GROUP BY DATE_FORMAT(FROM_UNIXTIME(time_col_name), '%H')
查看 MySQL 的 Date documentation。
编辑:
请改用DATE_FORMAT 来可靠地确定返回的小时格式。见DATE_FORMAT documentation。 注意:格式 %H 将返回格式为 00、01、... 23 的小时值。
【讨论】:
SELECT 子句并引用别名。
类似:
SELECT HOUR(FROM_UNIXTIME(unixCol))
FROM tbl
GROUP BY HOUR(FROM_UNIXTIME(unixCol))
HOUR 将提取 UNIX 时间戳转换为日期后的小时。
【讨论】:
尝试将该数据库数据作为日期放入变量中,然后回显它。
$timestamp = strtotime($db_data);
echo date("m-d-Y", $timestamp);
【讨论】:
我知道这是在最初的问题之后几年,但如果您正在处理更大的数据集,由于为查询集中的每一行调用 2 个函数,这可能需要更长的时间来执行。
通过使用一些模运算,我设法节省了几秒钟的时间
GROUP BY FLOOR(time_col/(60*60) MOD 24)
希望这会有所帮助:)
【讨论】: