【问题标题】:How to convert long verbal datetime to timestamp(YYYY-MM-DD HH:MM:SS) in SNOWFLAKE如何在 SNOWFLAKE 中将长口头日期时间转换为时间戳(YYYY-MM-DD HH:MM:SS)
【发布时间】:2021-11-04 16:43:42
【问题描述】:

在雪花中,我的日期格式不好,像这样 -

'2019 年 8 月 6 日星期二 18:22:59 EDT'

我正在尝试将其转换为以下日期格式 -

YYYY-MM-DD HH:MM:SS

我尝试了各种 TO_TIMESTAMP 版本,但似乎没有任何效果。非常感谢任何建议/帮助。

SELECT TO_TIMESTAMP_NTZ('Wed May 29 23:36:39 EDT 2019', 'DY MON DD HH:MM:SS YYYY')

错误消息 - 无法将“Wed May 29 23:36:39 EDT 2019”解析为格式为“DY MON DD HH:MM:SS YYYY”的时间戳

【问题讨论】:

  • 如果 EDT 总是这样,你可以试试:SELECT TO_TIMESTAMP('Wed May 29 23:36:39 EDT 2019', 'DY MON DD HH24:MI:SS EDT YYYY')
  • 是的,它只是 EDT,我也尝试过上面的选项,它似乎不起作用!
  • Snowflake 确实有实际的日期时间类型。如果您在那里看到奇怪的数据,您还应该修复架构,因为如果该字段使用 varchar 系列类型中的某些内容,那么事情真的会损坏
  • 不,这是我试图从 Snowflake 平台上的 JSON 源解析的数据,这不是 Snowflake 数据。

标签: sql datetime snowflake-cloud-data-platform


【解决方案1】:

这适用于我的雪花环境:

    SELECT to_timestamp('Wed May 29 23:36:39 EDT 2019', 'DY MON DD HH24:MI:SS EDT YYYY') as dt

使用 MI 数分钟(不是 MM)。

输出:2019-05-29 23:36:39.000

【讨论】:

  • 呃,我确实忽略了这个细节!感谢您指出了这一点!它有效
  • 不是东部夏令时间会发生什么? EDT 不考虑其他时区或标准 v 夏令时。
  • @GregPavlik 根据他的 cmets,他说它将始终显示 EDT。如果以后发生变化,他可以进行调整。
  • 谢谢,@Isolated 我在 cmets 中错过了这一点。我可能会提出一个不同的问题来处理时区缩写而不是偏移量。如果还没有在 Snowflake 标签上被询问和回答,我相信它会出现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 2011-10-05
相关资源
最近更新 更多