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

时间:2018-03-27 13:31:05

标签: amazon-athena presto

我想将字符串的数据类型(例如:'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(); 

但我收到了错误:

  

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

     

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

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

4 个答案:

答案 0 :(得分:2)

尝试使用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)

我相信你的问题看起来像:

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

答案 1 :(得分:0)

您可以尝试以下内容。

SELECT DATE_FORMAT('2018-03-27T00:20:00.855556Z','%Y-%m-%d %H:%i:%s');

Demo

答案 2 :(得分:0)

我使用以下方式,它对我有用。

date_parse(eta,'%Y-%m-%d %h:%i:%s')

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

datetime in presto

答案 3 :(得分:-1)

php 中,您可以使用date函数将字符串转换为日期

$timestamp = date('Y:m:d H:i:s',strtotime('2018-03-27T00:20:00.855556Z'));
mysql 中的

您需要更改日期字段的数据类型。