如何在PostgreSQL中给一个日期加上可变的小时数?

70

显然, PostgreSQL 没有 DATEADD 函数,因为你可以使用 +- 运算符来实现。

我需要在一个日期上添加若干小时,可以像这样完成:

date_field + interval '8.25 hour' 

这很好,但我需要从表格中的一个字段获取小时数。类似于这样:

date_field + interval start_time 'hour' 

我找不到任何关于如何做到这一点的信息。这真的是不可能的吗?

我不介意使用丑陋的技巧,比如将字段值除以3600,乘以86400。无论我需要做什么,但我也没有找到任何方法来做到这一点。

5个回答

121

由于您想要添加“小时”,因此应该改为:

SELECT date_field + interval '1 hour' * start_time

start_time 可以是任何数字值。
'1 hour' 可以缩写为 '1h'
interval 可以乘以标量。


10

在另一个SO问题中找到了答案,链接在此

date + interval '1' minute * FLOOR(start_time * 60)

希望这能帮助任何人。

6
我的建议是
SELECT date_field + interval '1' HOUR * start_time

start_time 可以是任何数值。


4
如果有人想要添加时间戳,则:
select time '05:00' - interval '2 hours'    

2
另一个选项是使用make_interval()
date_field + make_interval(hours => start_time)

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