次の列を個別に含むテーブルがあります:年、月、日、時、分、秒
それらを「TIMESTAMP」形式の単一の列として結合するにはどうすればよいですか?
前もって感謝します。
次の列を個別に含むテーブルがあります:年、月、日、時、分、秒
それらを「TIMESTAMP」形式の単一の列として結合するにはどうすればよいですか?
前もって感謝します。
SELECT year || '-' || month || '-' || day || ' ' || hour || ':' || minute || ':' || second FROM table_name
連結を使用してタイムスタンプにキャストするだけです。次に例を示します。
CREATE TABLE test (year integer, month integer, day integer,
hour integer, min integer, sec integer);
INSERT INTO test (year, month, day, hour, min, sec)
VALUES (2012, 10, 11, 01, 10, 35);
SELECT (year::text || '-' || month::text || '-' || day::text || ' '
|| hour::text || ':' || min::text || ':' || sec::text)::timestamp
FROM test
"timestamp"
"10/11/2012 1:10:35 AM"
Postgres 9.4 以降、これは非常に簡単になりました。
select make_timestamp(year, month, day, hour, minute, second) as ts_value
from the_table;
これは、すべての列が整数であることを前提としています (ただしsecond
、double になる可能性があるものを除く)。
そして、を作成するdate
にmake_date()
は、time
値を使用するために使用しますmake_time()