簡體   English   中英

在 postgres 中將天轉換為小時

[英]Transform days into hours in postgres

我有小時、分鍾、秒和天作為 Postgres 查詢的結果。 我想把所有東西都轉換成小時。

例子

Row 1 result: 19:53:45
Row 2 result: 1 day 05:41:58

現在我想將天數轉換為如下所示的小時數

   Row 1 result:19:53:45
    Row 2 result: 29:41:58

有人可以幫助我如何在 postgres sql 中做到這一點嗎?

據推測,您希望將結果作為字符串,因為時間限制為 24 小時。 您可以將其構建為:

select *,
       (case when ar[1] like '%day%'
             then (split_part(col, ' ', 1)::int * 24 + split_part(ar[1], ' ', 3)::int)::text ||
                  right(col, 6)
             else col
        end)
from (values ('19:53:45'), ('1 day 05:41:58')) v(col) cross join lateral
     regexp_split_to_array(col, ':') a(ar);

你也可以做到這一點沒有a

select *, 
       (case when col like '%day%'
             then (split_part(col, ' ', 1)::int * 24 + (regexp_match(col, ' ([0-9]+):'))[1]::int)::text ||
                  right(col, 6)
             else col
        end)
from (values ('19:53:45'), ('1 day 05:41:58')) v(col) ;

根據標准 SQL, cast(col as interval hour to minute)應該可以工作。

無論如何,這似乎有效:

col - extract(day from col) * interval '1'  day  -- remove the days 
    + extract(day from col) * interval '24' hour -- and add back as hours

小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM