在Presto中如何将hh-mm-ss格式字符串转换为hh:mm:ss时间格式
Presto SQL:将'hh-mm-ss'格式字符串转换为hh:mm:ss时间格式
如果你的时间数据是以'17-00-00'、'01-00-00'这种连字符分隔的字符串存储,需要转换成标准的hh:mm:ss格式,可以分两种场景处理:
1. 转换为字符串形式的hh:mm:ss
直接使用replace()函数替换字符串中的'-'为':'即可:
SELECT replace(your_time_column, '-', ':') AS formatted_time_str FROM your_table;
示例执行结果:
输入:'17-00-00' → 输出:'17:00:00'
输入:'01-00-00' → 输出:'01:00:00'
2. 转换为Presto原生TIME类型
如果需要将字符串转换为Presto的TIME类型(方便后续时间运算),可以先替换分隔符,再用time_parse()或cast()函数转换:
方法一:使用time_parse()
SELECT time_parse(replace(your_time_column, '-', ':'), 'HH:mm:ss') AS formatted_time FROM your_table;
方法二:使用cast()
SELECT cast(replace(your_time_column, '-', ':') AS TIME) AS formatted_time FROM your_table;
处理无效时间值
如果数据中存在不符合时间规则的字符串(比如'25-00-00'),可以用try_time_parse()替代time_parse(),避免查询报错,无效值会返回NULL:
SELECT try_time_parse(replace(your_time_column, '-', ':'), 'HH:mm:ss') AS formatted_time FROM your_table;
内容的提问来源于stack exchange,提问作者esmartman
相关产品推荐
相关产品推荐

