如何为MySQL FROM_UNIXTIME()结果提取小时?

时间:2013-03-11 00:14:44

标签: mysql sql datetime

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

5 个答案:

答案 0 :(得分:9)

我认为你的意思是FROM_UNIXTIME

GROUP BY
    DATE_FORMAT(FROM_UNIXTIME(time_column), '%Y %m %d %H'))

答案 1 :(得分:5)

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格式返回小时值。

答案 2 :(得分:1)

类似的东西:

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

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

See the documentation

答案 3 :(得分:0)

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

$timestamp = strtotime($db_data);
echo date("m-d-Y", $timestamp);

答案 4 :(得分:0)

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

我通过使用一些模运算

设法减少了几秒钟的时间
GROUP BY FLOOR(time_col/(60*60) MOD 24)

希望这会有所帮助:)