postgresql postgres时间转换小时:分钟:ss.us到小时:分钟

mjqavswn  于 2022-12-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(400)

使用PostgreSQL数据库为我的考勤申请。
我有一个表,上面有进出时间(hh:mm:ss.us格式)。
当我减去时间(出-入)来计算工作时间时,由于精度的原因,结果并不像预期的那样。
如果输入时间为“22:12:56.09”,输出时间为“22:14:06.06”,则仅考虑HH:mm时的差值应为00:02,但实际上显示为“00:01:09.97”,在Excel中仅使用HH:mm时变为“00:01”。
我正在尝试将时间从hh:mm:www.example.com转换ss.us为hh:mm(时间格式),以便减去时间并获得所需的输出。
我在SQL Server中做过类似的事情,但是我在PostgreSQL中没有找到任何函数。请告知。

ercv8c1e

ercv8c1e1#

首先你需要截断秒数,然后相减得到想要的结果
选择

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默认在interval中包括秒。

nzk0hqpo

nzk0hqpo2#

您可以将date_trunc函数与时间戳一起使用。
它的工作原理是这样的:
select date_trunc('minute', out) - date_trunc('minute', in)
这将为时间戳设置分钟级精度,并将HH:mm:ss转换为HH:mm:00

相关问题