57

显然,PostgreSQL 没有DATEADD,因为您可以只使用+or-运算符。

我需要在日期上添加几个小时,这是这样完成的:

date_field + interval '8.25 hour' 

这很好,但我需要从表中的字段来的小时数。会是这样的:

date_field + interval start_time 'hour' 

我在任何地方都找不到如何做到这一点。这真的不可能吗?

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

4

4 回答 4

106

既然你想添加hours,它应该是:

SELECT date_field + interval '1 hour' * start_time

start_time可以是任何数值。
'1 hour'可以缩短为'1h'
interval可以乘以一个标量。

于 2013-03-01T16:00:36.103 回答
8

在另一个 SO 问题中找到了答案:

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

希望对任何人都有帮助

于 2013-03-01T14:40:43.087 回答
6

为我工作的是

SELECT date_field + interval '1' HOUR * start_time

start_time可以是任何数值。

于 2017-09-19T21:56:22.543 回答
4

如果有人想添加时间戳,那么

select time '05:00' - interval '2 hours'    
于 2019-05-02T07:22:44.253 回答