PostgreSQL Timestamp减法 - 想要结果数小时

时间:2011-05-26 01:14:25

标签: sql postgresql

表:

create table examp (
  ID   integer,
  val1 timestamp,
  val2 timestamp,
  primary key(ID)
);

insert into examp (ID,val1,val2) values (1,'2011/5/26 10:00:00','2011/5/26 14:00:00');
insert into examp (ID,val1,val2) values (2,'2011/5/26 14:00:00','2011/5/25 14:00:00');

现在我想知道两小时时间戳的差异>我试过了:

 SELECT EXTRACT(hour FROM AGE(val1,val2)) 
   FROM examp 
  WHERE id = 2 

...但这给了我0!

1 个答案:

答案 0 :(得分:2)

您正在提取小时组件,而不是小时数。由于时间戳相隔24小时,因此小时字段的差异确实为零。

据推测,您可以extract days * 24 + extract hours获取所需信息。只要不是几个月或几年......您也可以转换为纪元,然后转换为/ 3600。

select extract(epoch from age(val1,val2))/3600 from examp where id=2;