Athena(SQL) 转换9/29/2021 2:36:32 PM格式字符串为Timestamp报错如何解决
解决方案
报错根因
- 非法格式符问题:Athena的
parse_datetime函数遵循Java DateTimeFormatter格式规范,不存在%i这个表示分钟的模式符,你误用了其他SQL方言的格式规则 - 分隔符不匹配:原始时间字符串的日期部分用斜杠
/分隔,你编写的模式串用了横杠-,无法匹配 - 小时制不匹配:原始时间带
PM/AM标识属于12小时制,你使用的%H是24小时制格式符,即使解决前两个问题也会出现时间解析错误
正确写法
直接使用如下语句即可完成转换,返回结果就是Timestamp类型:
parse_datetime(end_timestamp_t, '%M/%d/%Y %h:%m:%s %p')
各格式符对应说明:
%M:无前导零的月份,匹配示例中的9%d:日期,匹配示例中的29%Y:4位年份,匹配示例中的2021%h:12小时制无前导零的小时,匹配示例中的2%m:分钟,匹配示例中的36%s:秒,匹配示例中的32%p:AM/PM标识,匹配示例中的PM
备选方案
如果习惯使用类MySQL的格式符,也可以用date_parse函数实现相同效果:
date_parse(end_timestamp_t, '%c/%e/%Y %h:%i:%s %p')
内容的提问来源于stack exchange,提问作者user2216856
相关产品推荐
相关产品推荐

