繁体   English   中英

如何在雪花中将 UNIX 纪元日转换为 DATE?

[英]How to convert UNIX epoch days to DATE in Snowflake?

我有一些值对应于自 Epoch 以来的天数,并希望将它们存储在 Snowflake 的 DATE 列中。

示例:33057

对应于 2060 年 7 月 4 日星期日

如果有人可以为我指出正确的雪花文档(如果开箱即用),那将非常有帮助

我认为这会奏效:

select dateadd(day, <your number> - 33057, '2060-07-04')

因此,对于“33057”的具体转换,这将是:

select dateadd(day, 33057 - 33057, '2060-07-04')

但它应该适用于任何整数。

TO_TIMESTAMP_x (numeric_expr) 正是您要找的。 如果你只想要日期部分,我会通过::DATE截断

numeric_expr自 Unix 纪元 (1970-01-01 00:00:00 UTC) 开始以来的秒数(如果 scale = 0 或不存在)或几分之一秒(例如毫秒或纳秒)。 如果输入非整数十进制表达式,则结果的小数位数将被继承。

如果你有毫秒,你可以使用TO_TIMESTAMP_x(numeric_expr, scale)形式

select to_timestamp(12334567) as t_from_s
  ,to_timestamp(12334567000, 3) as t_from_ms;

T_FROM_S                   T_FROM_MS
1970-05-23 18:16:07.000    1970-05-23 18:16:07.000

我们在所有用法中都使用_NTZ变体,因为我们拥有来自服务器的所有 UTC 数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM