AWS Athena日期时间格式转换求助:YYYYMMDD转日期、时分秒转时间戳
AWS Athena 日期与时间列格式转换方案
问题根源
你之前的查询失效是因为格式符与原列的数值格式不匹配:原日期列是无分隔符的YYYYMMDD(如20230501),但你用了带横杠的%Y-%m-%d格式符,导致解析失败。
1. 日期列(YYYYMMDD数值)转换
转换为DATE类型
如果需要将数值型日期列转为Athena的DATE类型,先把数值转成字符串,再用date_parse匹配正确格式:
SELECT date_parse(cast(date_column AS varchar), '%Y%m%d') AS date_type_column FROM your_table;
输出为指定格式字符串(如2023-05-01)
如果要输出带分隔符的日期字符串,用date_format二次处理:
SELECT date_format( date_parse(cast(date_column AS varchar), '%Y%m%d'), '%Y-%m-%d' -- 可替换为'%Y/%m/%d'得到斜杠分隔格式 ) AS formatted_date_str FROM your_table;
2. 时间列(时分秒数值)转换
转换为TIME类型
同理,先转字符串,用time_parse匹配%H%i%s格式(对应时分秒):
SELECT time_parse(cast(time_column AS varchar), '%H%i%s') AS time_type_column FROM your_table;
输出为指定格式字符串(如18:34:34)
用time_format格式化输出:
SELECT time_format( time_parse(cast(time_column AS varchar), '%H%i%s'), '%H:%i:%s' ) AS formatted_time_str FROM your_table;
3. 组合日期+时间为完整时间戳
如果需要将两列合并成一个TIMESTAMP类型的字段:
SELECT timestamp_parse( concat(cast(date_column AS varchar), ' ', cast(time_column AS varchar)), '%Y%m%d %H%i%s' ) AS full_timestamp FROM your_table;
内容的提问来源于stack exchange,提问作者Yordan Trifonov
相关产品推荐
相关产品推荐

