繁体   English   中英

如何将可空列中的时间戳转换为 aws athena 中的日期?

[英]how to convert timestamps in a nullable column to dates in aws athena?

我想将字符串的数据类型(例如:'2018-03-27T00:20:00.855556Z')转换为日期(例如:'2018-03-27')

问题是 cast(substring(dt, 1, 10) as date) 在这里不起作用(INVALID_CAST_ARGUMENT:无法将值转换为日期)并且该列具有 null 个值和空字符串,因此 from_iso8601_timestamp 将失败(INVALID_FUNCTION_ARGUMENT:格式无效:“ ")

问题是 cast(substring(dt, 1, 10) as date) 在这里不起作用

无法重现,对我来说效果很好-

select cast(substring('2018-03-27T00:20:00.855556Z', 1, 10) as date);

Output:

_col0
2018-03-27

问题似乎与from_iso8601_timestamp相同 - 空字符串,因此您可以使用try (吞下所有异常并返回 null):

select try(from_iso8601_timestamp(dt)) dt
from (values ('2018-03-27T00:20:00.855556Z'),(null), ('')) as t(dt);

或者检查字符串是否为空:

select from_iso8601_timestamp(if(dt = '', null, dt)) dt
from (values ('2018-03-27T00:20:00.855556Z'),(null), ('')) as t(dt);

Output:

dt
2018-03-27 00:20:00.855 UTC
NULL
NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM