将字符串类型转换为Unix日期Amazon Athena

时间:2018-10-22 06:27:35

标签: date amazon-athena presto

我希望在Amazon Athena上获得一个结果,我可以算出按天(或按月)创建的用户数量

但是在此之前,我必须将unix时间戳转换为另一种日期格式。这就是我失败的地方。

我的最后一个目标是转换这种类型的时间戳:

  

1531888605109

类似:

  

2018-07-18

According to Epoch Converter

但是当我尝试应用此解决方案时,我在此问题中看到了:Casting unix time to date in Presto

我得到了错误:

  

[Simba] AthenaJDBC AWS Athena客户端引发了一个错误。语法:错误的行1:13:函数from_unixtime的意外参数(varchar)。预期:from_unixtime(double),from_unixtime(double,bigint,bigint),from_unixtime(double,varchar(x))[SQL状态= HY000,DB错误代码= 100071]

这是我的查询

select   cast(from_unixtime(created)as date) as date_creation, 
         count(created) 
from     datalake.test
group by date_creation

由于字段的数据类型不是日期,也许我不得不放弃sctring。

我的表格描述:Link to the table description

1 个答案:

答案 0 :(得分:0)

  

第1:13行:函数from_unixtime的意外参数(varchar)。预期:from_unixtime(double)

这意味着您的时间戳(即使它们显示为数字)也是varchar秒。 您需要向cast(from_unixtime(created)as date)添加CAST,例如:

CAST(from_unixtime(CAST(created AS bigint)) AS date)

注意:在处理与时间有关的数据时,请记住https://github.com/prestosql/presto/issues/37在Presto中尚未解析。