在我的出勤应用程序中使用PostgreSQL数据库。
我有一个带有输入和输出时间(hh:mm:ss.us格式)的表。
当我减去(OUT -IN)的时间来计算工作时间时,由于精度的原因,结果不如预期。
如果IN时间为“ 22:12:56.09” &OUT TIme是“ 22:14:06.06”,仅考虑HH:mm的差异应为00:02,但实际上显示的“ 00:01:09.97”在excel中仅使用HH:mm变为“ 00:01”。 / p>
我正在尝试将时间从hh:mm:ss.us转换为hh:mm(时间格式),以便我可以减去时间并获得所需的输出。
我在SQL Server中做过类似的事情,但是在PostgreSQL中没有找到任何功能。请告知。
答案 0 :(得分:0)
首先,您需要截断秒数。然后减去以获得预期的结果
选择
to_char(
(
to_char('22:14:06.06' :: time, 'HH24:MI'):: time -
to_char('22:12:56.09' :: time, 'HH24:MI'):: time
),
'HH24:MI'
)
结果:00:02
一般解决方案:
select
to_char(
(
to_char(out, 'HH24:MI'):: time - to_char(in, 'HH24:MI'):: time
),
'HH24:MI'
)
to_char()的目的是将结果格式化为小时:分钟,而不是秒。 默认情况下,Postgres的间隔时间为秒。
答案 1 :(得分:0)
您可以将date_trunc函数与时间戳一起使用。
它会像这样工作:
select date_trunc('minute', out) - date_trunc('minute', in)
这将在时间戳上设置分钟精度,并将HH:mm:ss转换为HH:mm:00