我正在使用雪花,我将日期作为这种格式的字符串
<块引用>'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'),
答案 0 :(得分:1)
为什么要去掉 +00
?就这样做:
select to_timestamp_ntz('2021-04-01 08:00:05.577209+00', 'YYYY-MM-DD HH24:MI:SS.FF+00')
答案 1 :(得分:0)
最好使用 left(ts,len( ts)-3) 而不是 left(ts,len( ts)-4) 来修剪最后 3 个字符。
您能否检查您的数据并确保它是“2021-04-01 08:00:05.577209+00”,因为它按预期工作(同时测试):
选择 ts, 左(ts,len(ts)-3)修剪, TO_TIMESTAMP_NTZ(left(ts,len(ts)-3),'YYYY-MM-DD HH24:MI:SS.FF') 结果 从值 ('2021-04-01 08:00:05.577209+00') tmp (ts);
结果:
+-------------------------------+----------------------------+-------------------------+
| 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 |
+-------------------------------+----------------------------+-------------------------+
答案 2 :(得分:0)
我已经找到了我的问题的答案。我正在从 Azure Data Lake 上的 CSV 文件中读取数据,但我没有注意到列中的引号。当我删除它们时,一切正常。