From: | Steve Rogerson <steve(dot)pg(at)yewtc(dot)demon(dot)co(dot)uk> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: setting time zone in a function |
Date: | 2016-04-21 15:03:56 |
Message-ID: | 5718EBDC.6040805@yewtc.demon.co.uk |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 21/04/16 14:47, Tom Lane wrote:
> Steve Rogerson <steve(dot)pg(at)yewtc(dot)demon(dot)co(dot)uk> writes:
>> I want the time zone if a function a bit like ...
>> CREATE OR REPLACE FUNCTION
>> short_name (timestamp with time zone, varchar) RETURNS varchar AS $$
>> DECLARE
>> ...
>> BEGIN
>> SET LOCAL TIME ZONE $2;
>
> Nope, that won't work: in general you can't put parameters into
> utility commands. Use set_config():
>
That works. Thanks.
> PERFORM set_config('timezone', $2, true);
>
> Also, I think "SET LOCAL" has transaction duration, not function duration,
> so you're going to have to work harder than this if you want the setting
> to be local to this function. SET LOCAL/set_config(true) inside an
> exception block might work --- and you may well want an exception block
> anyway, to trap bad timezone names. Or you could explicitly save and
> restore the previous setting, which is more code but might be faster
> than an exception block.
I wonder what counts as a valid time zone, I wasn't expecting this:
# set timezone = '==2.77';
SET
# select now();
now
-------------------------------
2016-04-18 09:40:52.089375-77
(1 row)
In my context I'm expecting an Olson type designation, "Europe/Madrid", I
guess that's hard to check for. I *think* I can live with the consequences, or
rather let a higher level deal with the problem. I would consider the above
time zone to be invalid.
Steve
From | Date | Subject | |
---|---|---|---|
Next Message | Adrian Klaver | 2016-04-21 15:08:48 | Re: Add relcreated (timestamp) column to pg_class catalog to record the time an object was created |
Previous Message | Melvin Davidson | 2016-04-21 14:53:26 | Re: Add relcreated (timestamp) column to pg_class catalog to record the time an object was created |