问题描述
我在 AWS Athena 中工作的源数据按时间显示活动。时间以字符串格式存储。我想将字符串转换为时间戳,以便对数据进行一些计算。
string_time 字段中的两个示例值是:
- 2020-12-07 11:00:02 AM -06:00
- 2020-12-07 2:54:46 PM -06:00
我尝试使用
将这些转换为时间戳parse_datetime(substr(string_time,1,22),'%Y-%m-%d %h:%i:%s %p')
或
parse_datetime(substr(string_time,'%Y-%m-%d %r)
但我不断收到类似的错误
INVALID_FUNCTION_ARGUMENT: Illegal pattern component: i
或者:
INVALID_FUNCTION_ARGUMENT: Illegal pattern component: r
知道我做错了什么吗?
解决方法
在 Presto 中,parse_datetime()
支持 Java 时间格式。由于您使用的是 MySQL 的格式说明符,因此您需要使用 date_parse()
。
所以:
date_parse(substr(string_time,1,22),'%Y-%m-%d %h:%i:%s %p')