我希望从下面的查询获得8:30小时而不是8小时
HOUR(TIMEDIFF('2018-12-01 07:00:00','2018-12-01 15:30:00')
Mysql小时函数只返回小时数而不是半小时
我们可以使用TimeStampDiff()函数以 SECOND 单位获得两个日期时间值之间的差异 . 现在,我们可以使用Sec_To_time()函数将其转换为Time .
SECOND
SELECT SEC_TO_TIME(TIMESTAMPDIFF(SECOND, '2018-12-01 07:00:00','2018-12-01 15:30:00'))
Result
| SEC_TO_TIME(TIMESTAMPDIFF(SECOND, '2018-12-01 07:00:00','2018-12-01 15:30:00')) | | ------------------------------------------------------------------------------- | | 08:30:00 |
你可以同时调用 HOUR 和 MINUTE 来获取分钟组件:
HOUR
MINUTE
SELECT HOUR(TIMEDIFF('2018-12-01 07:00:00','2018-12-01 15:30:00')) + MINUTE(TIMEDIFF('2018-12-01 07:00:00','2018-12-01 15:30:00')) / 60.0 AS hours FROM yourTable;
这输出 8.5 的小时数 .
8.5
另一种选择是首先将时间戳转换为UNIX时间戳,以秒为单位 . 然后将他们的差异转换回小时:
SELECT (UNIX_TIMESTAMP('2018-12-01 15:30:00') - UNIX_TIMESTAMP('2018-12-01 07:00:00')) / 3600.0 AS hours FROM yourTable;
2 回答
我们可以使用TimeStampDiff()函数以
SECOND
单位获得两个日期时间值之间的差异 . 现在,我们可以使用Sec_To_time()函数将其转换为Time .Result
你可以同时调用
HOUR
和MINUTE
来获取分钟组件:这输出
8.5
的小时数 .另一种选择是首先将时间戳转换为UNIX时间戳,以秒为单位 . 然后将他们的差异转换回小时:
演示