【问题标题】:Create table in SNOWFLAKE With Time stamp in UTC在 SNOWFLAKE 中创建带有 UTC 时间戳的表
【发布时间】:2021-06-16 21:03:11
【问题描述】:

我正在尝试创建。在雪花中稳定,确保时间戳是 CURRENT_TIMESTAMP() 但在 UTC 中。这是我正在使用的语法;

 ALTER SESSION SET TIMEZONE = 'UTC';
CREATE OR REPLACE TABLE DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES_DATAROBOT(
 ACCOUNT_ID NUMBER NOT NULL PRIMARY KEY,
 PREDICTED_PROBABILITY FLOAT,
TIME_PREDICTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

但在此表中插入行后,我仍然得到美国/洛杉矶时间格式的时间。

479291 0.5797053576  2021-06-16 13:56:26.595

我能否获得有关如何获取 UTC 时间戳的帮助?感谢您的帮助。

【问题讨论】:

    标签: timestamp snowflake-cloud-data-platform


    【解决方案1】:

    大卫的回答有效。您也必须将数据类型更改为 TIMESTAMPNTZ

    创建或替换表 DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES_DATAROBO( ACCOUNT_ID NUMBER NOT NULL PRIMARY KEY, PREDICTED_PROBABILITY 浮点数, TIME_PREDICTED TIMESTAMPNTZ DEFAULT CONVERT_TIMEZONE('UTC', current_timestamp())::TIMESTAMPNTZ );

    【讨论】:

      【解决方案2】:

      有几个选项用于时间戳和时区之间的转换。 我建议您熟悉three different kinds of timestamps

      这通常是我们使用的: CONVERT_TIMEZONE('UTC', current_timestamp())::timestamp_ntz

      无论您的 Snowflake 实例默认设置为哪个时区,转换都应该让您使用 UTC。而timestamp_ntz(无时区)是没有任何时区信息的时间戳,如果您知道它始终是UTC,则效果很好。

      如果不详细了解您的用例,我很难就您应该使用哪种时区数据类型给出全心全意的建议。此代码只需要稍作调整即可更改数据类型。

      编辑:更完整的测试示例

      CREATE OR REPLACE TABLE DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES_DATAROBOT(
       ACCOUNT_ID NUMBER NOT NULL PRIMARY KEY,
      TIME_PREDICTED1 TIMESTAMP_NTZ DEFAULT CONVERT_TIMEZONE('UTC',CURRENT_TIMESTAMP)::timestamp_ntz,
      TIME_PREDICTED2 TIMESTAMP_NTZ DEFAULT CONVERT_TIMEZONE('America/Los_Angeles',CURRENT_TIMESTAMP)::timestamp_ntz
      );
      
      insert into DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES_DATAROBOT (account_id)
      select 1;
      
      select * from DATA_LAKE.CUSTOMER.ACT_PREDICTED_PROBABILITIES_DATAROBOT;
      

      编辑 2: 我认为您的版本无法正常工作的原因是因为 default 约束没有“记住”会话时区。 default 将来会使用任何会话时区来进行插入查询,这也是最好在此处明确指定时区的另一个原因。

      【讨论】:

      • 感谢您的反馈。但这将适用于 SELECT 语句。我正在寻找的是当数据被插入到表中时,CURRENT TIMESTAMP shd 是 UTC 格式。希望我的问题是有道理的。很乐意澄清。
      • 使用我的版本添加了一个更完整的示例。您可以根据您的用例使用列类型和强制转换的数据类型。
      • 如果您仍然看到问题,那么可能是正在执行插入的任何进程将值放入其中,这将忽略默认约束。这是表格本身无法解释的。
      猜你喜欢
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多