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
我正在使用 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