The following bug has been logged online:
Bug reference: 5806
Logged by: Leslie Satenstein
Email address: lsatenstein(at)yahoo(dot)com
PostgreSQL version: 8.4 + 9.0
Operating system: Linux 64bit
Description: Julian Date routine miscalculates.
I found the Julian date code that is programmed in Postgres, to be accurate
and fast except for one situation. But, I do have one or two questions.
1) Which calendar is being used?
In the Gregorian Calendar, January 1, 0001 is lowest
> positive date. The day before 1/1/0001, according to the Gregorian
calendar is December 31,-0001 in which the year has a value of negative one
--- there is no zero year in the Gregorian Calendar. (zero year is an
I tested and found the algorithm in Postgres to have the day before January
1,0001 calculating as December 31,0000 even though the world calculates the
January 1,0001 as December 31,-0001.
2) Is the algorithm in Postgres correct? I think not, as the calculations
for the difference in days between
January 1, 0001 and December 31,-0001 is not 367 days, but just the value
To convert the code to work with the Gregorian calendar takes two fixes to
two sub-routines. Each fix is two lines of C code. I have tested the PG Date
C language routines with/without my fix, starting with the year around -4713
to several centuries into the future. As long as both versions do not deal
with negative dates both calculate identically.
3) Does PG want to fully follow the Gregorian Calendar
rule? If so,
4) Would you want my one patch with two fixes that would allow calculating
any two dates later in time than -4711.
pgsql-bugs by date
|Next:||From: Tom Lane||Date: 2010-12-29 18:00:24|
|Subject: Re: BUG #5806: Julian Date routine miscalculates. |
|Previous:||From: Tom Lane||Date: 2010-12-29 17:34:18|
|Subject: Re: BUG #5804: Connection aborted after many queries. |