Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year

From: Tomas Vondra <tv(at)fuzzy(dot)cz>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year
Date: 2014-11-05 18:13:12
Message-ID: 545A68B8.8000803@fuzzy.cz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 5.11.2014 19:02, Bruce Momjian wrote:
> On Wed, Nov 5, 2014 at 05:56:07PM +0000, hunsakerbn(at)familysearch(dot)org wrote:
>> The following bug has been logged on the website:
>>
>> Bug reference: 11883
>> Logged by: Bruce Hunsaker
>> Email address: hunsakerbn(at)familysearch(dot)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

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Tom Lane 2014-11-05 18:13:21 Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year
Previous Message Bruce Hunsaker 2014-11-05 18:06:03 Re: BUG #11883: Year 1500 not treated as leap year when it was a leap year