sql - 如何处理 AWS Athena 中同一列中只有日期 (%m-%d-%Y) 和日期时间 ('%m-%d-%Y %H:%i' 记录的列?

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

我正在尝试将字符串类型的日期列转换为日期类型。
我在 AWS Athena 中使用以下查询:

SELECT col0, col1, col2, date_parse(replace(col3, '/', '-'), '%m-%d-%Y') AS start_date
FROM "bucket"."table"
WHERE col3 <> ''
这适用于某些记录,因为某些日期的格式如下:12/08/2019但是对于其他格式如下的日期失败:7/1/2019 0:06其他一些日期的格式如下:2020/04/10 08:39这些不同格式的日期存在于同一列中。在这里处理脏数据...我明白为什么我的查询失败了,因为我只有 '%m-%d-%Y'格式在那里。只是想知道我将如何处理这样的事情,以便它可以在一个查询中处理所有 3 种格式。

最佳答案

您可以使用 Coalesce 的组合来运行各种组合。和 try .
各种日期时间格式可从 this presto documentation page 获得.

SELECT
    col0,
    col1,
    col2,
    Coalesce(
        try(date_parse(col3, '%m/%d/%Y')),
        try(date_parse(col3, '%Y/%m/%d %H:%i')),
        try(date_parse(col3, '%e/%c/%Y %k:%i'))
    ) AS start_date
FROM "bucket"."table"
WHERE col3 <> ''

关于sql - 如何处理 AWS Athena 中同一列中只有日期 (%m-%d-%Y) 和日期时间 ('%m-%d-%Y %H:%i' 记录的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62744415/

相关文章:

amazon-web-services - 通过AWS Lambda使用boto3访问被拒绝

mysql - 根据单元格值更新 MySQL 中的列

amazon-web-services - 没有事件的广告连播

php - 如何使用 MySQL 多查询优化查询?

amazon-web-services - 当我尝试使用 "Unable to Load Content Error"服务时,收到 "AWS Transfer to SFTP"

r - 为每个 ID 查找重叠日期并为重叠创建一个新行

Javascript计算两个日期yy-mm-dd之间的差异

sorting - MongoDB 日期排序的粒度?

sql - 在 Oracle BIND 变量中声明多个值

php - SQL 查询从最后一行递增 1?