Postgresql 在不损失精度的情况下将间隔转换为时间数据类型?

Postgresql 在不损失精度的情况下将间隔转换为时间数据类型?,postgresql,time,Postgresql,Time,我有一个持续时间,例如65.463秒,作为间隔存储 不幸的是,外部应用程序不理解间隔数据类型,所以我尝试使用时间数据类型。医生说时间的分辨率是微秒。但是,当我将间隔转换为时间时,我丢失了毫秒 我在视图定义中使用duration::time从间隔到时间执行强制转换 是否有其他方法进行转换/转换 编辑:我应该说,我确实尝试过使用显式精度铸造时间ie::时间(3),但似乎没有任何区别 编辑:视图定义: CREATE OR REPLACE VIEW public.timetest AS SELECT u

我有一个持续时间,例如65.463秒,作为间隔存储

不幸的是,外部应用程序不理解间隔数据类型,所以我尝试使用时间数据类型。医生说时间的分辨率是微秒。但是,当我将间隔转换为时间时,我丢失了毫秒

我在视图定义中使用duration::time从间隔到时间执行强制转换

是否有其他方法进行转换/转换

编辑:我应该说,我确实尝试过使用显式精度铸造时间ie::时间(3),但似乎没有任何区别

编辑:视图定义:

CREATE OR REPLACE VIEW public.timetest
AS SELECT user_sessionlaps.laptime,
    user_sessionlaps.laptime::text AS test1,
    user_sessionlaps.laptime::text::interval AS test2,
    user_sessionlaps.laptime::text::interval::time without time zone AS test3,
    user_sessionlaps.laptime::text::interval::time(3) without time zone AS test4
   FROM user_sessionlaps;

正如一个没有名字的@a_horse_在他的评论中所说,对
时间
进行强制转换确实会保留毫秒,但一些编辑可能会出于可读性的考虑而选择将其省略。如果我以毫秒为间隔,并将其转换为
时间
,看起来毫秒和微秒的值被截断了,但是如果我调用
对其进行字符
,您可以看到精度一直保持在引擎盖下

WITH ct AS (
  SELECT '3 MINUTES -3 SECONDS 3 MICROSECONDS'::interval as i
)
SELECT i,
    i::time without time zone,
    to_char(i::time without time zone, 'MI:SS.US')
FROM ct

为什么不将其作为代表秒数的小数点返回?这是我最初的做法,但第三方仪表板应用程序似乎无法将小数点作为格式化时间呈现。。。它期望时间在一段时间内。我尝试将其作为格式化字符串发送,但随后它显示了一个字符串,无法进行两次比较或将它们添加到一起。转换为
time
确实保留了毫秒和微秒:那么为什么我会得到不同的结果。。。。我已经用我的视图定义更新了这个问题,可能您的SQL客户机没有正确显示它。尝试使用
to_char()
在服务器上格式化时间(而不是通过SQL客户端),就像我在示例中所做的那样。