【问题标题】:How to retain a SQL DateTimeOffset in Snowflake without converting to UTC如何在 Snowflake 中保留 SQL DateTimeOffset 而不转换为 UTC
【发布时间】:2020-12-01 20:26:43
【问题描述】:

在 SQL Server 中,我将日期时间存储为 DateTimeOffset 数据类型,因此表值包含 UTC 偏移量。例如:

2020-05-24 14:20:18.0000000 -05:00

但是,一旦我导入 Snowflake(通过 Fivetran),该值就会转换为 UTC。例如:

2020-05-24 19:20:18.000 +0000

导入 Snowflake 后如何保持源值而不转换为 UTC?

【问题讨论】:

  • 嗨 - 目标列的数据类型是什么?
  • TIMESTAMP_TZ 所以我本以为它会被保留,但事实并非如此。
  • 我会看看 Fivetran 对数据做了什么。是否认识到源数据具有时区偏移量?您是否对数据进行任何转换?
  • 您的帐户、用户和会话的默认时区是什么?您的帐户是否可能使用 UTC 显示,因为这是默认设置?
  • 不对数据进行任何转换。我正在与 Fivetran 核对,并会通知您。谢谢。

标签: sql snowflake-cloud-data-platform utc datetimeoffset fivetran


【解决方案1】:

请注意,Snowflake 有 3 种不同的时区类型,包括 TIMESTAMP_LTZTIMESTAMP_TZ

  • TIMESTAMP_LTZ 以指定的精度存储 UTC 时间
  • TIMESTAMP_TZ 存储 UTC 时间以及相关的时区偏移量

使用TIMESTAMP_TZ 存储关联的时区偏移量。

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

【讨论】:

  • 初始导入时创建的列是TIMESTAMP_TZ,但值已转换。
  • 可能信息在翻译中丢失了?如果您在没有 Fivetran 的情况下摄取相同的数据会发生什么?如果可行,Fivetran 上可能有一个设置
  • 我正在与 Fivetran 核对,并会通知您。谢谢。
  • 确实是 Fivetran:根据我们这里的文档,特别是:Fivetran 最初将源时间戳转换为 UTC,然后将它们作为 UTC 加载到您的目的地。您看到的转换是预期的行为。然后,您可以将该值转换为所需的时区以进行分析。
  • 感谢您的帮助!
猜你喜欢
  • 2012-12-05
  • 1970-01-01
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多