Re: [HACKERS] What's happened with 1942

From: "Thomas G(dot) Lockhart" <lockhart(at)alumni(dot)caltech(dot)edu>
To: "jose' soares" <sferac(at)bo(dot)nettuno(dot)it>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, hackers <pgsql-hackers(at)postgreSQL(dot)org>
Subject: Re: [HACKERS] What's happened with 1942
Date: 1999-03-09 03:45:57
Message-ID: 36E49975.EFD1A0C5@alumni.caltech.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> > prova=> select date '1942-01-01' + interval '1 year';
> > ?column?
> > ----------------------
> > 1942-12-31 23:00:00+01 <---------????????????????
> > (1 row)

It is as Tom says:

postgres=> select date '1942-01-01' + interval '1 year';
?column?
----------------------------
Fri Jan 01 00:00:00 1943 GMT
(1 row)

$ setenv PGTZ PST8PDT

postgres=> select date '1942-01-01' + interval '1 year';
?column?
----------------------------
Fri Jan 01 01:00:00 1943 PWT
(1 row)

We seem to have had a timezone adjustment for that year here too. But it
is in your timezone database, not inside of Postgres. Really...

> Thomas would have a better idea about this than I do, but I'm betting
> that the date-plus-interval operator thinks that a "one year" interval
> means "365 (or 366 in leap year) times 24 hours", rather than "same
> local time on the same nominal date next year". I seem to recall
> discussions about exactly what "date plus 1 day" means when crossing a
> daylight-savings-time boundary, for example.

Actually, I'm pretty sure that it adds one to the year in a tm
structure. But Jose's local time zone changed across that year, and the
calculations are done in GMT, then "rotated" back to local time, which
reflects that new zone definition.

You can use zdump to look at the time zone definitions. What time zone
are you using Jose'?

- Tom

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 1999-03-09 03:48:37 Re: [HACKERS] Developers globe
Previous Message Bruce Momjian 1999-03-09 03:25:41 Re: OUTER joins