如何在 Presto (Athena) 中将字符串转换为时间戳?

Har*_*wal 7 presto amazon-athena

我想将字符串的数据类型(例如:'2018-03-27T00:20:00.855556Z')转换为时间戳(例如:'2018-03-27 00:20:00')。

实际上我在 Athena 中执行查询:

select * from tb_name where elb_status_code like '5%%' AND 
date between DATE_ADD('hour',-2,NOW()) AND NOW(); 
Run Code Online (Sandbox Code Playgroud)

但我有错误:

SYNTAX_ERROR:第 1:100 行:无法检查 varchar 是否为带时区的时间戳和带时区的时间戳

此查询针对“vf_aws_metrices”数据库运行,除非查询限定。请在我们的论坛上发布错误消息或使用查询 ID 联系客户支持:6b4ae2e1-f890-4b73-85ea-12a650d69278。

原因:因为字符串格式的日期必须转换为时间戳。但我不知道如何转换它。

kok*_*ing 15

尝试使用from_iso8601_timestamp. 请访问以下地址以了解有关时间戳相关功能的更多信息:https : //docs.starburstdata.com/latest/functions/datetime.html

presto:tiny> select from_iso8601_timestamp('2018-03-27T00:20:00.855556Z');
            _col0
-----------------------------
 2018-03-27 00:20:00.855 UTC
(1 row)
Run Code Online (Sandbox Code Playgroud)

我相信你的查询应该是这样的:

select * from tb_name where elb_status_code like '5%%' AND 
from_iso8601_timestamp(date) between DATE_ADD('hour',-2,NOW()) AND NOW(); 
Run Code Online (Sandbox Code Playgroud)


Dhe*_*raj 11

我使用了以下方法,它对我有用。

date_parse(eta,'%Y-%m-%d %h:%i:%s')
Run Code Online (Sandbox Code Playgroud)

请阅读下面的文档以获取详细的输出

急板中的日期时间


Pau*_*ira 6

我做了:

\n

选择 parse_datetime(\'2020-12-20 16:05:33\',\'yyyy-MM-dd H:m:s\') 作为 dta;

\n

parse_datetime(string, format) \xe2\x86\x92 带时区的时间戳

\n

也可以看看:

\n

https://prestodb.io/docs/current/functions/datetime.html#java-date-functions

\n

https://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html

\n