如何在postgres中将整数分钟转换为间隔
how to convert integer minutes to interval in postgres
我正在尝试将整数分钟转换为 postgres 中的间隔
他们是否有任何函数可以帮助我将它转换为间隔,或者我应该将它除以 60 并得到最终结果
20 minutes will be like 00:20:00 as result
你可以用 ' minutes'
:
连接那个整数
t=# with i as (
select 20::int n
)
select concat(n,' minutes')::interval
from i;
concat
----------
00:20:00
(1 row)
Time: 1.220 ms
更新:
或:interval '1' minute * n
如a_horse_with_no_name所述
最快的方法是 make_interval
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)
所以它看起来像这样(根据@Teddy 的建议)
SELECT make_interval(mins => 20);
或者,
SELECT make_interval(0,0,0,0,0,20);
并不是说那是最干净的,如果速度不是问题,我更喜欢@a_horse_with_no_name提到的*
方法
SELECT 20 * '1 minute'::interval;
如果您尝试在 interval
列中插入数据,您可以使用整数秒,PostgreSQL 会将其转换为间隔。
我正在尝试将整数分钟转换为 postgres 中的间隔
他们是否有任何函数可以帮助我将它转换为间隔,或者我应该将它除以 60 并得到最终结果
20 minutes will be like 00:20:00 as result
你可以用 ' minutes'
:
t=# with i as (
select 20::int n
)
select concat(n,' minutes')::interval
from i;
concat
----------
00:20:00
(1 row)
Time: 1.220 ms
更新:
或:interval '1' minute * n
如a_horse_with_no_name所述
最快的方法是 make_interval
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)
所以它看起来像这样(根据@Teddy 的建议)
SELECT make_interval(mins => 20);
或者,
SELECT make_interval(0,0,0,0,0,20);
并不是说那是最干净的,如果速度不是问题,我更喜欢@a_horse_with_no_name提到的*
方法
SELECT 20 * '1 minute'::interval;
如果您尝试在 interval
列中插入数据,您可以使用整数秒,PostgreSQL 会将其转换为间隔。