On Fri, May 19, 2023 at 06:03:43PM +0000, PG Doc comments form wrote:
> The following documentation comment has been logged on the website:
> 
> Page: https://www.postgresql.org/docs/15/datatype-datetime.html
> Description:
> 
> This statement in section 8.5.3 states
> "All timezone-aware dates and times are stored internally in UTC. They are
> converted to local time in the zone specified by the TimeZone configuration
> parameter before being displayed to the client." 
> Is not correct for timetz

Uh, yes to the storage part, no to the output part.  ;-)  Postgres does
store the timetz time zone offset, but it doesn't adust it once it is
stored so doesn't adjust for the session time zone:

        SHOW timezone;
             TimeZone
        ------------------
         America/New_York
        
        CREATE TABLE test (x1 time, x2 timetz, x3 timestamp with time zone);
        
        INSERT INTO test VALUES ('09:00:00', '09:00:00', '2023-09-07 09:00:00');
        
        SELECT * FROM test;
            x1    |     x2      |           x3
        ----------+-------------+------------------------
         09:00:00 | 09:00:00-04 | 2023-09-07 09:00:00-04
        
        SET TIMEZONE = 'Asia/Tokyo';

        SELECT * FROM test;
            x1    |     x2      |           x3
        ----------+-------------+------------------------
         09:00:00 | 09:00:00-04 | 2023-09-07 22:00:00+09
         --         --      ---              --      ---

You can see it stored _internally_ here:

        ./src/include/utils/date.h

        typedef int64 TimeADT;

        typedef struct
        {
            TimeADT     time;           /* all time units other than months and 
years */
            int32       zone;           /* numeric time zone, in seconds */
        } TimeTzADT;

Do we want to document this?

-- 
  Bruce Momjian  <br...@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  Only you can decide what is important to you.


Reply via email to