使用to_char
:
regress=# SELECT to_char( (9999999 ||' seconds')::interval, 'HH24:MM:SS' );
to_char
------------
2777:00:39
(1 row)
text
フォーマットされた値を生成する関数は次のとおりです。
CREATE OR REPLACE FUNCTION sec_to_time(bigint) RETURNS text AS $$
SELECT to_char( ($1|| ' seconds')::interval, 'HH24:MI:SS');
$$ LANGUAGE 'SQL' IMMUTABLE;
例えば:
regress=# SELECT sec_to_time(9999999);
sec_to_time
-------------
2777:00:39
(1 row)
結果が必要な場合は、次INTERVAL
を使用します。
CREATE OR REPLACE FUNCTION sec_to_time(bigint) RETURNS interval AS $$
SELECT justify_interval( ($1|| ' seconds')::interval);
$$ LANGUAGE 'SQL' IMMUTABLE;
...次のような結果が生成されます。
SELECT sec_to_time(9999999);
sec_to_time
-------------------------
3 mons 25 days 17:46:39
(1 row)
ただし、 INTERVAL
to をキャストしないでください。TIME
日の部分は破棄されます。代わりに切り捨てなしto_char(theinterval, 'HH24:MI:SS)
に変換するために使用します。text