2

我正在使用 postgres 8.3.12 和新手。

我有一列格式如下:'29/04/2013 at 09:27:51 PM (or AM)'

我正在执行以下操作以将它们设置为时间戳:

case when <criteria> to_timestamp(time, 'MM/DD/YYYY at HH:MI:SS AM') as start 
case when <criteria> to_timestamp(time, 'MM/DD/YYYY at HH:MI:SS AM') as end

我的目标是计算两个时间戳之间的小时数。

我查看了http://www.postgresql.org/docs/current/static/functions-datetime.html

在我将它们设置为时间戳之后,它只是结束 - 以差异开始吗?

4

1 回答 1

4

假设您有两个名为 timea 和 timeb 的列,以下将返回您在 PostgreSQL 中它们之间的小时数:

SELECT EXTRACT(EPOCH FROM timea - timeb) / 3600 AS hours FROM ...;

还需要注意的是:

EXTRACT(EPOCH FROM timea - timeb)

此外, timea 和 timeb 不需要是列 - 你可以在这里使用任何你想要的表达式,只要它们是时间戳。

将返回给您两个时间戳之间的秒数- 这对于计算分钟数、小时数、天数等​​很有用 - 无论您喜欢什么。特别是小时,包含 3600 秒,因此您只需除以 3600 即可获得小时数。

EXTRACT 功能可以为您做各种强大的事情。我建议在这里查看它的文档。

于 2013-05-31T19:11:30.527 回答