Thread: Select Interval in plpgsql
I can't seem to figure out how to accomplish this task in a plpgsql function:
I have a timestamp variable 'apt_time' and a varchar variable 'time_offset'. The time_offset variable usually looks like this: '-2 hours'. What I want to do is add the time_offset to the timestamp. So I have tried:
SELECT apt_time + interval time_offset INTO Adjusted_Time;
Where Adjusted_Time is the variable to store the result.
But I keep getting errors. I'm not sure where the problem is, as I obviously have not set up the field or variable types properly, or have structured the SELECT improperly.
This statement works just fine:
SELECT apt_time + interval '-2 hours' INTO Adjusted_Time;
but when I try to use a variable with the interval, I can't get it to work.
Any help would be appreciated.
Thanks,
Derrick
On Mar 21, 2005, at 10:24 PM, Derrick Betts wrote: > I can't seem to figure out how to accomplish this task in a plpgsql > function: > > I have a timestamp variable 'apt_time' and a varchar variable > 'time_offset'. The time_offset variable usually looks like this: '-2 > hours'. What I want to do is add the time_offset to the timestamp. > So I have tried: > Here is an example: create or replace function time_test (time_offset text) returns timestamp as ' declare tm timestamp = now(); adjust timestamp; begin adjust := tm + time_offset::interval; return adjust; end; ' language plpgsql; select time_test('2 hours'); time_test ---------------------------- 2005-03-22 02:45:59.357986 (1 row) You could also write the assignment like this: select into adjust tm + time_offset::interval; John DeSoi, Ph.D. http://pgedit.com/ Power Tools for PostgreSQL