Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 雪花-将字符串转换为日期时间_Datetime_Time_Timestamp_Snowflake Cloud Data Platform_Sql Timestamp - Fatal编程技术网

Datetime 雪花-将字符串转换为日期时间

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)来

我使用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)来修剪最后3个字符

  • 您是否可以检查您的数据并确保它是“2021-04-01 08:00:05.577209+00”,因为它按预期工作(使用这两种方法进行测试):

    选择ts, 左(ts,透镜(ts)-3)修剪, 到时间戳(左(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 |
    +-------------------------------+----------------------------+-------------------------+
    

    为什么要将
    +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”的时间戳,这就是我要求您检查数据的原因:)