Datetime 雪花-将字符串转换为日期时间
我使用snowflake,我将date作为一个字符串,格式如下 ‘2021-04-01 08:00:05.577209+00’ 我想把它转换成DateTime。我使用下面的代码来实现这一点(首先从每个字符串中修剪“+00”)。然而,我认为我对它的定义有点错误,所以我不断地犯错误Datetime 雪花-将字符串转换为日期时间,datetime,time,timestamp,snowflake-cloud-data-platform,sql-timestamp,Datetime,Time,Timestamp,Snowflake Cloud Data Platform,Sql Timestamp,我使用snowflake,我将date作为一个字符串,格式如下 ‘2021-04-01 08:00:05.577209+00’ 我想把它转换成DateTime。我使用下面的代码来实现这一点(首先从每个字符串中修剪“+00”)。然而,我认为我对它的定义有点错误,所以我不断地犯错误 TO_TIMESTAMP_NTZ(left(ts,len(ts)-4),'YYYY-MM-DD HH24:MI:SS.FF'), 最好使用left(ts,len(ts)-3)而不是left(ts,len(ts)-4)来
TO_TIMESTAMP_NTZ(left(ts,len(ts)-4),'YYYY-MM-DD HH24:MI:SS.FF'),
+-------------------------------+----------------------------+-------------------------+
| TS | TRIMMED | RESULT |
+-------------------------------+----------------------------+-------------------------+
| 2021-04-01 08:00:05.577209+00 | 2021-04-01 08:00:05.577209 | 2021-04-01 08:00:05.577 |
+-------------------------------+----------------------------+-------------------------+
为什么要将
+00
修剪掉?就这样做吧:
选择时间戳('2021-04-01 08:00:05.577209+00','YYYY-MM-DD HH24:MI:SS.FF+00'))
我找到了问题的答案。我正在Azure data Lake上读取CSV文件中的数据,但我没有注意到列中的引号。当我删除它们时,一切都正常。Hi@simon,当我使用你的代码时,我发现下面的错误无法将“2021-03-31 20:00:33.205903+00”解析为格式为“YYYY-MM-DD HH24:MI:SS.FF+00”的时间戳。你能显示准确的代码吗?因为这对我有用:选择时间戳(2021-03-31 20:00:33.205903+00),“YYYY-MM-DD HH24:MI:SS.FF+00”)
只是想补充一点,@SimonDarr提出的解决方案也适用于我。我从Azure data Lake下载数据并创建外部表。这只是csv文件2021-04-01 08:00:11.211201+00中的日期格式。我在snowflake中为本专栏使用的代码如下所示:TO_TIMESTAMP_NTZ((值:c4::STRING),'YYYY-MM-DD HH24:MI:SS.FF+00')请共享完整的SQL和返回的错误消息Hi,不幸的是,我仍然收到无法解析的错误'“2021-03-31 17:00:20.975882”作为格式为“YYYY-MM-DD HH24:MI:SS.FF”的时间戳,这就是我要求您检查数据的原因:)