如何在 AWS Athena 中将字符串成功转换为日期类型?
How to successfully convert string to date type in AWS Athena?
我正在尝试将字符串类型的日期列转换为日期类型。
我在 AWS Athena 中使用以下查询:
SELECT a, b, date_parse(date_start, '%m-%d-%Y') AS date_start
FROM "database"."table"
如果我添加一个限制 10 ,它就可以了。但是当我尝试对所有记录执行此操作时,出现此错误:
INVALID_FUNCTION_ARGUMENT: Invalid format: "5/16/2020" is malformed at "/16/2020"
字符串类型列中的所有日期都如下所示 - 2/22/2020 并且它已正确转换。我不明白为什么它不会对其余部分做同样的事情。
另一个问题 - 我正在使用上面的 SELECT
语句测试转换 - 如果我弄清楚了下一步该怎么做?我可以在 AWS Athena 中执行 UPDATE TABLE
吗?
您的日期字符串看起来像 '2-22-2020'
还是 '2/22/2020'
?
如果您有分隔符 '/'
,如您的错误消息所示,那么您需要调整您的格式说明符:
SELECT a, b, date_parse(date_start, '%m/%d/%Y') AS date_start
FROM "pg_orangeboydata"."kanopy"
您也可以同时管理两种格式:
SELECT a, b, date_parse(replace(date_start, '/', '-'), '%m-%d-%Y') AS date_start
FROM "pg_orangeboydata"."kanopy"
我正在尝试将字符串类型的日期列转换为日期类型。
我在 AWS Athena 中使用以下查询:
SELECT a, b, date_parse(date_start, '%m-%d-%Y') AS date_start
FROM "database"."table"
如果我添加一个限制 10 ,它就可以了。但是当我尝试对所有记录执行此操作时,出现此错误:
INVALID_FUNCTION_ARGUMENT: Invalid format: "5/16/2020" is malformed at "/16/2020"
字符串类型列中的所有日期都如下所示 - 2/22/2020 并且它已正确转换。我不明白为什么它不会对其余部分做同样的事情。
另一个问题 - 我正在使用上面的 SELECT
语句测试转换 - 如果我弄清楚了下一步该怎么做?我可以在 AWS Athena 中执行 UPDATE TABLE
吗?
您的日期字符串看起来像 '2-22-2020'
还是 '2/22/2020'
?
如果您有分隔符 '/'
,如您的错误消息所示,那么您需要调整您的格式说明符:
SELECT a, b, date_parse(date_start, '%m/%d/%Y') AS date_start
FROM "pg_orangeboydata"."kanopy"
您也可以同时管理两种格式:
SELECT a, b, date_parse(replace(date_start, '/', '-'), '%m-%d-%Y') AS date_start
FROM "pg_orangeboydata"."kanopy"