如何更改时间列以在TimescaleDB中包含时区?

如何更改时间列以在TimescaleDB中包含时区?,timescaledb,Timescaledb,如何在TimescaleDB中将列类型从timestamp更改为timestamptz 我使用摄取脚本将数据从XDB获取到TimescaleDB。这将创建使用时间戳作为其时间列的表 创建表格条件( 时间戳不为空, 位置文本不为空, 温度双精度零点 ); 我尝试使用standart命令将其转换为timestamptz 改变表格条件 使用(“time”::timestamptz)更改列“time”类型timestamptz 但这产生了以下错误 ERROR: check constraint &

如何在TimescaleDB中将列类型从timestamp更改为timestamptz

我使用摄取脚本将数据从XDB获取到TimescaleDB。这将创建使用时间戳作为其时间列的表

创建表格条件(
时间戳不为空,
位置文本不为空,
温度双精度零点
);
我尝试使用standart命令将其转换为timestamptz

改变表格条件
使用(“time”::timestamptz)更改列“time”类型timestamptz
但这产生了以下错误

ERROR:  check constraint "constraint_1007" of relation "_hyper_12_1007_chunk" is violated by some row
CONTEXT:  SQL statement " ALTER TABLE _timescaledb_internal._hyper_12_1007_chunk ADD CONSTRAINT constraint_1007 CHECK ( "time" >= TIMESTAMPTZ '2020-12-03 01:00:00+01' AND "time" < TIMESTAMPTZ '2020-12-10 01:00:00+01' ) "
PL/pgSQL function _timescaledb_internal.chunk_constraint_add_table_constraint(_timescaledb_catalog.chunk_constraint) line 42 at EXECUTE
SQL state: 23514
错误:检查某行违反了关系“\u hyper\u 12\u 1007\u chunk”的约束“constraint\u 1007”
上下文:SQL语句“ALTER TABLE\u timescaledb\u internal.\u hyper\u 12\u 1007\u chunk ADD CONSTRAINT\u 1007 CHECK(“time”>=TIMESTAMPTZ'2020-12-03 01:00:00+01'和“time”
您似乎认为
timestamptz
存储时区。
事实并非如此:PostgreSQL类型
时间戳
时间戳
都不存储时区。
他们只是以不同的方式对待输入:看看这两种类型

一旦理解了这一点,您可能会发现不需要将
时间戳
转换为
时间戳

当您仍要转换类型时,这可能会有所帮助