mysql 时间差异到小时

2022-08-30 10:34:01

我正在尝试从我的表中获取时间差异并将其转换为小时(它适用于按小时计费的服务)

选择TIME_TO_SEC(TIMEDIFF(endDate,startDate))/3600 从任务>

其中 endDate 和 startDate 采用日期时间格式

有没有另一种方法(更有效)来完成这项任务?谢谢!


答案 1

TIMEDIFF(endDate, startDate)以日期时间格式输出,如此平坦,以至于时间戳和除以(60 * 60)

SELECT (UNIX_TIMESTAMP(TIMEDIFF(endDate, startDate))/(60*60)) AS hours_difference
FROM tasks

编辑:或者,TimestampDiff也可以以更优雅的方式提供有效的解决方案,提供其示例:

SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');

您的解决方案可以是:

SELECT TIMESTAMPDIFF(HOUR, startDate, endDate) AS hours_different
FROM tasks

答案 2

注意,此链中投票最多的答案不正确!使用 HOUR 将仅将小时数作为整数返回。下面将更正最常用的答案,将小时数作为整数返回,将分钟作为小数返回(即 6.5 小时)。

TIME_TO_SEC(TIMEDIFF(endDate, startDate))/3600 as hours

推荐