首页 > 解决方案 > 更改雪花中默认时间戳列的时区

问题描述

我在雪花中定义了一个表,如下所示;

CREATE OR REPLACE TABLE DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES(
PREDICTED_PROBABILITY FLOAT,
TIME_PREDICTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP
 );

正如预期的那样,默认时区是美国/洛杉矶。我正在尝试将其更改为 UTC,但仅适用于本专栏,而不是帐户/会话级别。这是我编写的代码;

ALTER TABLE  DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES ALTER TIME_PREDICTED  SET    timezone=  'UTC';

但它给出了一个错误,

SQL compilation error: syntax error line 1 at position 86 unexpected 'timezone'.

我可以就如何在列级别进行更改获得帮助吗?在此先感谢。

标签: timezonesnowflake-cloud-data-platform

解决方案


我建议查看有关timestamp数据类型的文档:

https://docs.snowflake.com/en/sql-reference/data-types-datetime.html#timestamp

但是,假设您TIMESTAMP_TYPE_MAPPING仍然是 的默认值TIMESTAMP_NTZ,那么您现在有一堆设置为 America/Los Angeles 的数据,值中没有时区偏移,并且如果您不打算更改任何帐户时区设置,那么您要么需要保留它,只需在使用该CONVERT_TIMEZONE函数选择数据时更改时区,或者您应该将表定义更改为包含时区偏移的数据类型。您还可以通过使用相同的函数对其进行转换来按原样更新该列CONVERT_TIMEZONE,但未来的数据仍将使用美国/洛杉矶时区插入。

我的建议是TIMESTAMP_TZ用作您的列类型并相应地修改当前数据。


推荐阅读