在PostgreSQL中查找时间戳之间的差异(以秒为单位)

179

我在PostgreSQL 8.3中有一张表,其中包含2个timestamp列。我想要获取这些timestamps之间的时间差,以秒为单位。请问如何实现?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)
我需要得到类似于(时间戳B - 时间戳A)的秒数 (不仅仅是秒数之差,它应该包括小时、分钟等)
2个回答

355

尝试:

SELECT EXTRACT(EPOCH FROM (timestamp_B - timestamp_A))
FROM TableA

详细信息请参见:EXTRACT


3
非常感谢您的回答,它起作用了!在上面的查询中,我们漏掉了一个右括号。但我已经找出来了。非常感谢您迅速的回复。 - Arun

45
select age(timestamp_A, timestamp_B)
回复Igor的评论:
select age('2013-02-28 11:01:28'::timestamp, '2011-12-31 11:00'::timestamp);
              age              
-------------------------------
 1 year 1 mon 28 days 00:01:28

它不能完成工作。它将“减去参数,生成一个使用年份和月份的‘符号性’结果”。它不会给出以秒为单位的差异。 - Ihor Romanchenko
@Igor 更新了结果,包括秒数。原帖作者不仅想要秒数,还想要分钟、小时等。 - Clodoaldo Neto
7
如果我正确理解他的意思,他想要“以秒为单位获取这些时间戳之间的差异”。而“它应该包括小时、分钟等”,这意味着它必须是完整的差值,例如“10:25:30 - 10:15:25 = 605 秒”。我的猜测是,他使用了“EXTRACT(SECONDS FROM ...)”,得到的结果是“10:25:30 - 10:15:25 = 5 秒”。 - Ihor Romanchenko
1
@Igor,不是很清楚,但既然你这么说,我想你可能是对的。 - Clodoaldo Neto
如果我只需要这个查询的一个月差异怎么办? - Ahmed
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接