如何在PostgreSQL中实现Trino的parse_duration秒转时长功能?
在PostgreSQL中将秒数转换为时间间隔的方法
PostgreSQL里有两种简单方式实现这个需求,直接生成可与时间戳相加的interval类型:
方法1:使用
make_interval函数(推荐)
这是PostgreSQL原生的时间间隔生成函数,直接指定秒数参数即可,语法简洁可读性强:make_interval(seconds => update_interval::int)用21600秒测试的示例:
SELECT make_interval(seconds => 21600); -- 输出结果:06:00:00和时间戳直接相加的用法:
SELECT CURRENT_TIMESTAMP + make_interval(seconds => update_interval::int);方法2:字符串拼接转
interval
和你在Trino里的思路类似,把秒数转成字符串后拼接单位,再强制转换为interval类型:(update_interval::int || 's')::interval -- 也可以写全单位:(update_interval::int || ' seconds')::interval同样用21600秒测试:
SELECT (21600 || 's')::interval; -- 输出结果:06:00:00与时间戳相加的示例:
SELECT CURRENT_TIMESTAMP + (update_interval::int || 's')::interval;
两种方法都能满足需求,优先推荐make_interval——它是专门为生成时间间隔设计的函数,类型更安全,不容易出现格式错误。
内容的提问来源于stack exchange,提问作者Robbie
相关产品推荐
相关产品推荐

