从date_trunc之后的输出整理尾随:00

我有以下SELECT,我在其中从表中减去两次以查看花费了多长时间。

SELECT finished-started AS duration FROM table;

这给了我 3天00:17:15.181635

然后我使用了date_trunc,因为我只关心分钟数。

SELECT date_trunc('minute',finished-started) AS duration FROM table;

这给了我类似 3天00:17:00

的答案

有没有一种方法可以从末尾开始剪裁:00,以便SELECT输出3天00:17之类的内容?

huzhuangc 回答:从date_trunc之后的输出整理尾随:00

使用rtrim()

您执行date_trunc(),将其强制转换为varcharrtrim()的结尾:00 部分:

SELECT 
    rtrim(date_trunc('minute',finished - started)::varchar(255),':00') AS duration 
FROM table

使用to_char()

由于interval类型的格式化选项受到限制,因此有点令人费解。 您可以使用'DD HH24:MI'格式语法,但不会以单位显示天/天(例如,您将获得 3 00:17 )。如果可以的话,您可以使用以下查询:

SELECT 
    to_char(date_trunc('minute',finished - started),'DD HH24:MI') AS duration
FROM table

如果需要显示天/天(例如, 3天00:17 ),那么您需要手动对其进行“编程”,如下所示:

SELECT  
    CASE
        WHEN EXTRACT(day from finished - started) < 1 THEN 
            to_char(date_trunc('minute','HH24:MI')
        WHEN extract(day from finished - started) > 1 THEN 
            to_char(date_trunc('minute','DD "days" HH24:MI')
        ELSE
            to_char(date_trunc('minute','DD "day" HH24:MI')
    END AS duration
FROM table
本文链接:https://www.f2er.com/3027206.html

大家都在问