问题 如何在postgres中将整数分钟转换为间隔


我正在尝试将postgres中的整数分钟转换为间隔

他们的任何功能是否会帮助我将其转换为间隔,或者我应该将其除以60并获得最终结果

20 minutes will be like 00:20:00 as result 

12477
2018-04-27 11:43


起源

你应该标记这个并移动它 数据库管理员 - Evan Carroll


答案:


最快的方式是 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;

12
2018-04-27 16:26



为什么不简单 make_interval(mins := 20)? - Teddy
@Teddy很好的纠正,我已经补充说 - Evan Carroll


你可以用这个整数来连接 ' 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所说


3
2018-04-27 11:44



谢谢Vao Tsun,这对我有用 - Abhijeet Gulve
要么: interval '1' minute * n - a_horse_with_no_name