我将例如65.463秒的持续时间存储为间隔。
不幸的是,外部应用程序不了解时间间隔数据类型,因此我尝试使用时间数据类型。医生说时间的分辨率是微秒。但是当我间隔时间时,我会损失毫秒!
我正在VIEW定义中使用duration :: time来执行从时间间隔到时间的转换。
还有其他方法可以进行投射/转换吗?
编辑:我应该说,我在转换为时间时确实尝试使用显式精度,例如:: time(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;
答案 0 :(得分:1)
正如@a_horse_with_no_name在他的评论中所说,强制转换为time
确实可以保留毫秒,但是出于可读性考虑,一些编辑者可能会选择省略掉它。如果我使用毫秒间隔并将其强制转换为time
,则看起来毫秒和微秒的值已被截断,但是如果我对它调用to_char
,则可以看到精度得到了保持在引擎盖下。
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