我想在postgres中将间隔转换为十进制并需要此结果?

时间:2017-08-03 13:25:38

标签: postgresql datetime intervals

我在oracle中有相同的查询

select ( TRUNC(b.pub_ts, 'MI') - DATE '1970-01-01')* 24 * 60 * 60, 
             TRUNC(b.pub_ts, 'MI') - DATE '1970-01-01'
                from abctable b  where b.blurb_id=344143

oracle中查询的输出是这个

enter image description here

并且我在postgres中转换了查询,我想要相同的结果我怎么能得到它,我已经创建了postgres的查询,但是它给出了间隔而不是像oracle那样的十进制输出

 select  ( date_trunc('minute', b.pub_ts) - DATE '1970-01-01')* 24 * 60 * 60,
                              date_trunc('minute', b.pub_ts) - DATE '1970-01-01'
  FROM abc b WHERE b.blurb_id=344143;  

enter image description here

我尝试了很多解决方案。你能救我吗?

1 个答案:

答案 0 :(得分:3)

我认为are是正确的,我认为它与How do I convert an interval into a number of hours with postgres?

重复

如果你检查接受的答案,下面例子中唯一不同的是,我加了24分。

SELECT EXTRACT(epoch FROM INTERVAL '1499990400 days 1206720:00:00')/24/60/60,
       EXTRACT(epoch FROM INTERVAL '17361 days 13:58:00')/24/60/60;

返回

1500040680和17361.581944444442

这正是您想要的值。

您的查询应该如下:

SELECT
  extract( epoch FROM date_trunc('minute', b.pub_ts) - DATE '1970-01-01'),
  extract( epoch FROM date_trunc('minute', b.pub_ts) - DATE '1970-01-01')/86400
FROM abc b WHERE b.blurb_id=344143;