将 postgres 间隔正确格式化为 HH:MM

Properly format postgres interval to HH:MM

正在尝试计算 postgre 中的时间间隔,

SELECT 
    employee_id,
    clock_in,
    clock_out,
    (SELECT EXTRACT(epoch FROM (clock_out-clock_in))/3600) AS time_worked
FROM
    payroll_timelog
WHERE
    employee_id=31;

我正在尝试将其格式化为 HH:MM 格式,但我得到了以 10 为底的浮点数 7.975380470833334

这应该是 7.58(7 小时 58 分钟)。这个精度很重要。

我尝试转换为 int:

(SELECT EXTRACT(epoch FROM (clock_out-clock_in))::int/3600) AS time_worked

但四舍五入为 7

如何才能确保获得 7.58 的预期结果?

我们可以在两个日期时间相减后使用 TO_CHARHH24:MI 格式。

SELECT 
    employee_id,
    clock_in,
    clock_out,
    TO_CHAR(clock_out - clock_in,'HH24:MI')
FROM
    payroll_timelog
WHERE
    employee_id=31;

sqlfiddle