尝试在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结果?
上面的答案忽略“day”,对于“4 days 06:30:00”返回“06:30”,这是不正确的,考虑“day”应该使用这个:
select concat(EXTRACT(DAY FROM (clock_out - clock_in)) * 24 + EXTRACT(HOUR FROM (clock_out - clock_in)),':',EXTRACT(MINUTE FROM (clock_out - clock_in))) AS time_worked