【问题标题】:Casting String type to Unix Date Amazon Athena将字符串类型转换为 Unix 日期 Amazon Athena
【发布时间】:2019-02-02 03:06:35
【问题描述】:

如果我可以计算按天(或按月)创建的用户数量,我希望在 Amazon Athena 中获得结果

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

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

1531888605109

类似:

2018-07-18

According to Epoch Converter

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

我得到了错误:

[Simba]AthenaJDBC AWS Athena 客户端引发错误。 SYNTAX_ERROR:第 1:13 行:函数 from_unixtime 的意外参数 (varchar)。预期: from_unixtime(double) , from_unixtime(double, bigint, bigint) , from_unixtime(double, varchar(x)) [SQL State=HY000, DB Errorcode=100071]

这是我的查询:

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

也许我必须转换字符串,因为该字段的数据类型不是日期。

我的表描述:Link to the table description

【问题讨论】:

  • 也许给你正在使用的 Athena 版本的链接。
  • 错误消息是说from_unixtime 需要一个双精度,但提供的参数createdvarchar 类型(Hive 字符串类型的SQL 名称)。所以你需要类似 list from_unixtime(cast(created as DOUBLE))

标签: date amazon-athena presto


【解决方案1】:

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

这意味着您的时间戳——即使它们显示为数字——是varchars。 你需要给cast(from_unixtime(created)as date)添加一个CAST,比如:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-21
    • 2022-01-14
    • 2021-11-04
    • 2020-10-21
    • 2018-12-19
    • 1970-01-01
    • 2019-08-21
    • 1970-01-01
    相关资源
    最近更新 更多