Amazon web services 无法分析雅典娜中的UTC日期

Amazon web services 无法分析雅典娜中的UTC日期,amazon-web-services,datetime-format,amazon-athena,presto,trino,Amazon Web Services,Datetime Format,Amazon Athena,Presto,Trino,我的日期字符串格式为:2019-02-18 09:17:31.260000+00:00,我正在尝试将其转换为雅典娜的日期 我曾尝试按照SO答案中的建议转换为时间戳,但失败了。 有一个讨论,但没有回答这个特定的日期格式 我尝试了几种格式,如'YYYY-MM-dd HH:MM:ss.ssssss z',但不起作用,并且出现了错误,如无效函数\参数:无效格式:…在“+00:00”处格式错误 被困一段时间,任何帮助都将不胜感激 雅典娜是基于一个非常古老的普雷斯托版本,没有直接的方法可以通过一些字符串操作

我的日期字符串格式为:2019-02-18 09:17:31.260000+00:00,我正在尝试将其转换为雅典娜的日期

我曾尝试按照SO答案中的建议转换为时间戳,但失败了。 有一个讨论,但没有回答这个特定的日期格式

我尝试了几种格式,如'YYYY-MM-dd HH:MM:ss.ssssss z',但不起作用,并且出现了错误,如无效函数\参数:无效格式:…在“+00:00”处格式错误


被困一段时间,任何帮助都将不胜感激

雅典娜是基于一个非常古老的普雷斯托版本,没有直接的方法可以通过一些字符串操作技巧来实现。例如,您可以使用提取字符串中与时区类型的内置时间戳兼容的部分,并执行以下操作:

SELECT cast(regexp_replace('2019-02-18 09:17:31.260000+00:00'),(\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2}\.\d{3})\d{3}(.*),$1$2')作为带时区的时间戳)
()的最新版本引入了对高达纳秒精度(12位小数)的可变精度时间类型的支持

使用该功能,您只需执行以下操作:

trino> select cast('2019-02-18 09:17:31.260000+00:00' as timestamp(6) with time zone);
             _col0
--------------------------------
 2019-02-18 09:17:31.260000 UTC
(1 row)

雅典娜是基于一个非常古老的版本的普雷斯托,并没有直接的方式做一些字符串操纵技巧。例如,您可以使用提取字符串中与时区类型的内置时间戳兼容的部分,并执行以下操作:

SELECT cast(regexp_replace('2019-02-18 09:17:31.260000+00:00'),(\d{4}-\d{2}-\d{2}\d{2}:\d{2}:\d{2}\.\d{3})\d{3}(.*),$1$2')作为带时区的时间戳)
()的最新版本引入了对高达纳秒精度(12位小数)的可变精度时间类型的支持

使用该功能,您只需执行以下操作:

trino> select cast('2019-02-18 09:17:31.260000+00:00' as timestamp(6) with time zone);
             _col0
--------------------------------
 2019-02-18 09:17:31.260000 UTC
(1 row)
对于的答案,较短的版本是将多余的字符分为子字符串:

select cast(substr('2019-02-18 09:17:31.260000+00:00',1,23) as timestamp);
对于的答案,较短的版本是将多余的字符分为子字符串:

select cast(substr('2019-02-18 09:17:31.260000+00:00',1,23) as timestamp);

第一个有效:)+1非常感谢!但是,第二个错误会导致错误:输入“不匹配”,应为“{”),“数组”},状态代码为400。。也许就像你说的,基于旧版本的普雷斯托的雅典娜不支持它。第一个版本有效:)+1非常感谢!但是,第二个错误会导致错误:输入“不匹配”,应为“{”),“数组”},状态代码为400。。也许就像你说的,基于旧版本的普雷斯托的雅典娜不支持它。谢谢你的这种方法!是的,它更短,可读性更强。不过,只有在你不在乎时区的情况下,这才有效。谢谢你的这种方法!是的,它更短,可读性更强。不过,只有在你不在乎时区的情况下,它才有效。