Amazon Athena - 无法将变量字符转换为日期

Amazon Athena - Cannot convert variable character to date

我正在使用 Amazon Athena 处理一组存储为可变字符的数据,并希望将它们转换为日期。 table 中有两列具有日期:(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. 

如何将可变字符文本成功转换为日期格式?我可能遗漏了什么?

从错误看来,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