こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

PostgreSqlのinterval型のフォーマ

PostgreSqlのinterval型の項目に"1 day 05:19:00"という値が入っています。
これを29:19という時分で、
もしくは時を単独で29(時間)という数値に変換する方法を教えてください


SELECT
item1 -- "1 day 05:19:00"
, to_char(item1,'HH:MI') -- "05:19"
, to_char(item1,'HH24:MI') -- "05:19"
, to_char(item1,'HH') -- "05"
, to_char(item1,'MI') -- "19"
FROM (select '1 day 05:19:00'::interval AS item1) query1

投稿日時 - 2017-04-19 10:53:58

QNo.9319293

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

これで、29を取得できます。

SELECT (CAST(TO_CHAR(DATE_TRUNC('hour', ('1 day 05:19:00'::interval)), 'DD') AS integer) * 24) + CAST(TO_CHAR(DATE_TRUNC('hour', ('1 day 05:19:00'::interval)), 'HH24') AS integer)

投稿日時 - 2017-04-20 10:55:45

お礼

有難うございます。

つまりは、特にこれといった方法は存在しないので、
自力で日付に24を掛けて時を足せって事ですね。

ちなみに時未満を切り捨てる処理
DATE_TRUNC('hour', ('1 day 05:19:00'::interval))
の部分は必要なさそうですね。



SELECT
TO_CHAR(item1, 'DD')::integer * 24 + TO_CHAR(item1, 'HH24')::integer
FROM (select '1 day 05:19:00'::interval AS item1) query1

投稿日時 - 2017-04-20 11:21:41