'列的类型为时间戳,没有时区,但表达式的类型为时间间隔'Redshift

时间:2019-10-21 16:14:58

标签: sql amazon-redshift

我有一列时区名称。我想获得另一列,其中包含与UTC时间相比的时差。但是我不知道在创建表时应该为该偏移量列使用哪种数据类型。我用过:

CREATE TABLE zone_offset(
zone_name varchar(50),
zone_utc_diff timestamp
);

INSERT INTO zone_offset

SELECT zone_name, getdate() - getdate() at time zone zone_name AS zone_utc_diff
FROM zones

,我得到了那个错误。如何使它与任何数据类型一起使用?

非常感谢您!

1 个答案:

答案 0 :(得分:0)

您可能应该将zone_utc_diff存储为一个间隔而不是一个时间戳。时间戳代表日期/时间,而间隔代表日期之间的差异。

Demo on DB Fiddle

create table zones (
    zone_name varchar(50)  
);    

insert into zones values('cet');

create table zone_offset(
    zone_name varchar(50),
    zone_utc_diff interval
);

insert into zone_offset
select zone_name, current_timestamp - (current_timestamp at time zone zone_name) as zone_utc_diff
from zones


select * from zone_offset;

| zone_name | zone_utc_diff   |
| --------- | --------------- |
| cet       | {"hours":-1}    |