[英]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.