Snowflake TIMESTAMP - 将毫秒值保留为 .000000,存储在表中
Posted
技术标签:
【中文标题】Snowflake TIMESTAMP - 将毫秒值保留为 .000000,存储在表中【英文标题】:Snowflake TIMESTAMP - Preserve Millisecond Values to .000000, store in table 【发布时间】:2019-11-21 02:53:07 【问题描述】:我的json值为2045-06-02T09:23:41.8666668
我想通过 TIMESTAMP 转换为雪花中的 DATE 数据类型并保持准确的值,但我有三个问题:
1) TIMESTAMP 数据类型从不存储在表中。 (每https://docs.snowflake.net/manuals/sql-reference/data-types-datetime.html)
2) 当我使用 ::TIMESTAMP 时,它会在 2045-06-02 09:23:41.866
处中断
3)去掉表示时间的“T”
谁能指点我处理这个问题的文档?
【问题讨论】:
【参考方案1】:1) & 2) 文档(您链接到)说 TIMESTAMP 默认使用 9dp,当您选择时看到的是演示文稿格式问题,而不是存储问题。
select '2045-06-02 09:23:41.8666668'::text as ta
,'2045-06-02 09:23:41.9777779'::text as tb
,ta::timestamp ta_d, ta::timestamp(0) ta_0
,ta::timestamp(3) ta_3
,ta::timestamp(6) ta_6
,tb::timestamp tb_d, tb::timestamp(0) tb_0
,tb::timestamp(3) tb_3, tb::timestamp(6) tb_6)
,datediff('millisecond', ta_d, tb_d )
,datediff('millisecond', ta_0, tb_0 )
,datediff('millisecond', ta_3, tb_3 )
,datediff('millisecond', ta_6, tb_6 ),
datediff('microsecond', ta_d, tb_d )
,datediff('microsecond', ta_0, tb_0 )
,datediff('microsecond', ta_3, tb_3 )
,datediff('microsecond', ta_6, tb_6 )
,datediff('nanosecond', ta_d, tb_d )
,datediff('nanosecond', ta_0, tb_0 )
,datediff('nanosecond', ta_3, tb_3 )
,datediff('nanosecond', ta_6, tb_6 )
;
默认显示小数点后 9 位。
3) 那是一个formatting thing..
【讨论】:
以上是关于Snowflake TIMESTAMP - 将毫秒值保留为 .000000,存储在表中的主要内容,如果未能解决你的问题,请参考以下文章
Snowflake SQL 错误 - 函数“-”的参数类型无效:(TIMESTAMP_NTZ(9), TIMESTAMP_NTZ(9))
将含有timestamp的json对象的毫秒数转成日期格式 ssh+jqery+json中timestamp数据问题
使用“?::TIMESTAMP_NTZ”在查询中指定类型时,Snowflake JDBC 批量插入失败并显示“绑定变量?未设置”