【问题标题】:AWS Athena - Format and filter datetimeAWS Athena - 格式化和过滤日期时间
【发布时间】:2020-10-15 12:58:31
【问题描述】:

我有一张表格,里面有两种不同的日期格式:

d/m/Y 和 m/d/Y。想要的日期格式是 d/m/Y

如果日期格式错误,我可以选择日期列并进行检查和格式化。

这是我当前的 SQL 查询:

SELECT COALESCE(TRY(date_format(date_parse(tbl.date, %d/%m/%Y), %d/%m/%Y)),
                TRY(date_format(date_parse(tbl.date, %m/%d/%Y), %d/%m/%Y))) as date
FROM xxx            

这修复了不匹配的日期...但是我还需要查询一个日期范围,例如过去 7 天。

如果我添加一个 WHERE 语句,它不会执行,因为我之前已经查询了日期。

如何格式化我的日期并根据给定范围(过去 7 天)进行过滤?

【问题讨论】:

    标签: sql amazon-web-services presto amazon-athena


    【解决方案1】:

    在 Athena 所基于的 Presto 实现的 ANSI SQL 中,WHERE 子句无法引用 SELECT 投影,因此您需要一个 aubquery:

    SELECT *
    FROM (
      SELECT COALESCE(TRY(date_parse ....... AS date
      FROM xxx
    )
    WHERE date > current_date - INTERVAL '7' DAY
    

    【讨论】:

    • 一切正常,直到我得到的地方:">" 不能应用于 varchar,日期。有什么建议吗?
    猜你喜欢
    • 2020-06-22
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多