86

Apparently, PostgreSQL doesn't have DATEADD, because you can just use the + or - operators.

I need to add a number of hours to a date, which is accomplished like this:

date_field + interval '8.25 hour' 

Which is great, but I need the number of hours to come from a field in the table. Would be something like this:

date_field + interval start_time 'hour' 

I can't find anywhere how to do this. Is this actually impossible?

I don't mind resorting to ugly hacks like taking the field value and dividing by 3600, multiplying by 86400. Whatever I need to do, but I haven't found any way to do that either.

5 Answers 5

138

To add hours:

SELECT date_field + interval '1 hour' * start_time;

interval can be multiplied by a scalar.
start_time can be any numerical value.
'1 hour' can be shortened to '1h'.

If date_field is data type ...
... timestamp without time zone (= timestamp) or date, the result is timestamp.
... timestamp with time zone (= timestamptz), the result is timestamptz.

Sign up to request clarification or add additional context in comments.

1 Comment

Erwin Brandstetter strikes again :) Awesome answer
11

Found the answer, in another SO question:

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

Hope that helps anyone

Comments

7

The one worked for me is

SELECT date_field + interval '1' HOUR * start_time

start_time can be any numerical value.

Comments

6

If anyone wants to add in time stamp then

select time '05:00' - interval '2 hours'    

Comments

2

Another option is to use make_interval()

date_field + make_interval(hours => start_time)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.