我有一个表格,其中分别包含以下列:年、月、日、小时、分钟、秒
如何将它们组合为“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
它也可以是双精度)
并创造一个date
,使用make_date()
,为一个time
价值使用make_time()