On 6/6/23 03:56, Laurenz Albe wrote:
On Mon, 2023-06-05 at 23:13 -0400, Vik Fearing wrote:
The Standard defines time zone conversion as follows:

<datetime factor> ::=
    <datetime primary> [ <time zone> ]

<time zone> ::=
    AT <time zone specifier>

<time zone specifier> ::=
      LOCAL
    | TIME ZONE <interval primary>


While looking at something else, I noticed we do not support AT LOCAL.
The local time zone is defined as that of *the session*, not the server,
which can make this quite interesting in views where the view will
automatically adjust to the session's time zone.

Patch against 3f1aaaa180 attached.

+1 on the idea; it should be faily trivial, if not very useful.

Thanks.

At a quick glance, it looks like you resolve "timezone" at the time
the query is parsed.  Shouldn't the resolution happen at query
execution time?

current_setting(text) is stable, and my tests show that it is calculated at execution time.


postgres=# prepare x as values (now() at local);
PREPARE
postgres=# set timezone to 'UTC';
SET
postgres=# execute x;
          column1
----------------------------
 2023-06-06 08:23:02.088634
(1 row)

postgres=# set timezone to 'Asia/Pyongyang';
SET
postgres=# execute x;
          column1
----------------------------
 2023-06-06 17:23:14.837219
(1 row)


Am I missing something?
--
Vik Fearing



Reply via email to