【问题标题】:Amazon Athena - Cannot convert variable character to dateAmazon Athena - 无法将变量字符转换为日期
【发布时间】:2021-11-04 00:22:01
【问题描述】:

使用 Amazon Athena,我正在处理一组存储为可变字符的数据,并希望将它们转换为日期。表中有两列具有日期:(1) action_date 和 (2) pricing_date。

使用 action_date,我已经能够使用带有以下查询的 dateparse 函数成功转换原始数据:

SELECT  date_parse(s.action_date,'%m/%d/%Y %H:%i:%s') AS dataconverted
FROM "database"."sales" s

对于pricing_date,尽管数据格式相同,但我在做同样的事情时遇到了困难。我会假设查询应该是相同的。以下是我的查询:

SELECT  date_parse(s.pricing_date,'%m/%d/%Y %H:%i:%s') AS dataconverted
FROM "mydatabase"."sales" s

以下是我在 Amazon Athena 中遇到的错误:

Your query has the following error(s):
    [ErrorCategory:USER_ERROR, ErrorCode:INVALID_ARGUMENT], Detail:INVALID_FUNCTION_ARGUMENT: Invalid format: ""
    This query ran against the "mydatabase" database, unless qualified by the query. 

如何将可变字符文本成功转换为日期格式?我可能会错过什么?

【问题讨论】:

  • 你能举一些日期字符串的例子吗?

标签: type-conversion number-formatting amazon-athena date-formatting date-conversion


【解决方案1】:

从错误来看,pricing_date 列有时是一个空字符串。如果输入不是指定的格式,date_parse 将抛出错误。您可以通过运行SELECT date_parse('', '%m/%d/%Y %H:%i:%s')SELECT date_parse('asdasd','%m/%d/%Y %H:%i:%s') 来观察这一点。

您可以通过添加保护(例如IF(s.pricing_date <> '', date_parse(…), NULL))或将调用包装在TRY 中来解决此问题,如果出现错误,则会导致NULL

SELECT try(date_parse(s.pricing_date,'%m/%d/%Y %H:%i:%s')) AS dataconverted
FROM "mydatabase"."sales" s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-21
    • 2022-01-14
    • 1970-01-01
    • 2018-02-23
    • 2018-12-19
    • 2015-12-13
    • 1970-01-01
    • 2015-01-23
    相关资源
    最近更新 更多