Redshift中如何将Varchar类型时间与Timestamp类型时间相加?
Redshift中Timestamp与Varchar格式时间相加的解决方案
Redshift不支持直接将timestamp类型与cast(varchar as time)的结果进行加法运算,你可以通过以下两种方式实现需求,无需修改原varchar列的类型:
方法1:拆分时间字段转换为Interval类型
利用split_part拆分varchar格式的时分秒,拼接成interval格式的字符串后转换为interval类型,再与timestamp相加:
select my_timestamp + cast( trim(split_part(my_str_time, ':', 1)) || ' hours ' || trim(split_part(my_str_time, ':', 2)) || ' minutes ' || trim(split_part(my_str_time, ':', 3)) || ' seconds' as interval ) as my_end_time from my_db.my_table;
注:使用trim是为了处理my_str_time中可能存在的首尾空格,避免转换出错。
方法2:转换为总秒数后计算
将varchar格式的时间转换为总秒数,再通过interval '1 second'乘以秒数得到时间间隔,与timestamp相加:
select my_timestamp + interval '1 second' * ( cast(trim(split_part(my_str_time, ':', 1)) as int) * 3600 + cast(trim(split_part(my_str_time, ':', 2)) as int) * 60 + cast(trim(split_part(my_str_time, ':', 3)) as int) ) as my_end_time from my_db.my_table;
内容的提问来源于stack exchange,提问作者briba
相关产品推荐
相关产品推荐

