Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year
От | Tomas Vondra |
---|---|
Тема | Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year |
Дата | |
Msg-id | 545A68B8.8000803@fuzzy.cz обсуждение исходный текст |
Ответ на | Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year (Bruce Momjian <bruce@momjian.us>) |
Список | pgsql-bugs |
On 5.11.2014 19:02, Bruce Momjian wrote: > On Wed, Nov 5, 2014 at 05:56:07PM +0000, hunsakerbn@familysearch.org wrote: >> The following bug has been logged on the website: >> >> Bug reference: 11883 >> Logged by: Bruce Hunsaker >> Email address: hunsakerbn@familysearch.org >> PostgreSQL version: 9.3.5 >> Operating system: Linux >> Description: >> >> Entering historical dates we found we could not enter a date of '1500-02-29' >> Even though 1500 is documented to be a leap year. Tested with date and >> timestamp column types. >> >> To reproduce: >> psql> create table date_test (mydate date); >> CREATE TABLE >> psql> insert into date_test values ('1500-02-29'); >> ERROR: date/time field value out of range: "1500-02-29" >> LINE 1: insert into date_test values ('1500-02-29'); >> >> psql> insert into date_test values ('1500-02-28'); >> INSERT 0 1; >> >> So, Feb 29, is not allowed but Feb 28 is. > > Uh, what makes you think 1500 was a leap year? This is the canonical > way to calculate which years are leap years: > > #define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0)) > > Because 1500 % 100 == 0, I think 1500 was not a leap year. Well, the thing is this only works since 1582. Prior to that, only the first condition was used. Tomas
В списке pgsql-bugs по дате отправления: