如何更改 Amazon Redshift 中的默认时区?

Posted

技术标签:

【中文标题】如何更改 Amazon Redshift 中的默认时区?【英文标题】:How to change the default timezone in Amazon Redshift? 【发布时间】:2016-03-31 15:57:40 【问题描述】:

默认将时间戳列设置为 SYSDATE,将其存储为 UTC。是否可以更改时区,以便 SYSDATE 将日期和时间存储到不同的时区?

到目前为止,我已经检查了SET 命令,但我不确定是否可以使用它来更改时区。

【问题讨论】:

【参考方案1】:

基本上,答案是否定的。根据documentation:

TIMESTAMP 值在用户表和用户表中都是 UTC,而不是本地时间 Amazon Redshift 系统表。

注意不支持带时区的时间戳。

如果您需要查询返回不同时区的数据,您可以使用CONVERT_TIMEZONE 函数,使用恒定时区值(或查询参数),或将结果加入到包含所需时区的配置表中。

【讨论】:

感谢您的意见。我选择将默认值设置为我的本地时区:create_timestamp timestamp DEFAULT convert_timezone('America/Toronto', getdate()) NOT NULL, 为了澄清,支持带有时区信息的时间戳,您可以使用类型 TIMESTAMPTZ 而不是 TIMESTAMP。这本质上是时区信息的别名。请参阅此处的文档 - docs.aws.amazon.com/redshift/latest/dg/… 除了 SET TIMEZONE = 'America/Los_Angeles'; 例如他们指定使用仅在领导节点上设置环境而不是在写入表的计算节点上设置:因此表通常会获得 UTC 标记。设置用户时区或使用上面 Jorge 的评论。设置随机种子的问题相同。

以上是关于如何更改 Amazon Redshift 中的默认时区?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Amazon Redshift 中的数字溢出问题

如何更新 Amazon Redshift 上的 Python 库?

Amazon Redshift VACUUM 按架构还是按数据库运行?

如何使用 Amazon Redshift 中的临时表列更新现有表中的列?

如何清除 Amazon Redshift 中的以下语法错误

仅当表存在时如何删除 Amazon Redshift 中的表