mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
The following patches eliminate the overflows in the j2date() and date2j()
functions which limited the maximum date for a timestamp to AD 1465001. The new limit is AD 5874897. The files affected are: doc/src/sgml/datatype.sgml: Documentation change due to patch. Included is a notice about the reduced range when using an eight-byte integer for timestamps. src/backend/utils/adt/datetime.c: Replacement functions for j2date() and date2j() functions. src/include/utils/datetime.h: Corrected a bug with the limit on the earliest possible date, Nov 23,-4713 has a Julian day count of -1. The earliest possible date should be Nov 24, -4713 with a day count of 0. src/test/regress/expected/horology-no-DST-before-1970.out: src/test/regress/expected/horology-solaris-1947.out: src/test/regress/expected/horology.out: Copies of expected output for regression testing. Note: Only horology.out has been physically tested. I do not have access to a Solaris box and I don't know how to provoke the "pre-1970" test. src/test/regress/sql/horology.sql: Added some test cases to check extended range. John Cochran
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.113 2003/01/31 01:08:07 tgl Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.114 2003/02/19 03:48:10 momjian Exp $
|
||||
-->
|
||||
|
||||
<chapter id="datatype">
|
||||
@ -1243,7 +1243,7 @@ SELECT b, char_length(b) FROM test2;
|
||||
<entry>both date and time</entry>
|
||||
<entry>8 bytes</entry>
|
||||
<entry>4713 BC</entry>
|
||||
<entry>AD 1465001</entry>
|
||||
<entry>AD 5874897</entry>
|
||||
<entry>1 microsecond / 14 digits</entry>
|
||||
</row>
|
||||
<row>
|
||||
@ -1251,7 +1251,7 @@ SELECT b, char_length(b) FROM test2;
|
||||
<entry>both date and time</entry>
|
||||
<entry>8 bytes</entry>
|
||||
<entry>4713 BC</entry>
|
||||
<entry>AD 1465001</entry>
|
||||
<entry>AD 5874897</entry>
|
||||
<entry>1 microsecond / 14 digits</entry>
|
||||
</row>
|
||||
<row>
|
||||
@ -1309,7 +1309,8 @@ SELECT b, char_length(b) FROM test2;
|
||||
a few years of 2000-01-01, but the precision degrades for dates further
|
||||
away. When timestamps are stored as eight-byte integers (a compile-time
|
||||
option), microsecond precision is available over the full range of
|
||||
values.
|
||||
values. However eight-byte integer timestamps have a reduced range of
|
||||
dates from 4713 BC up to 294276 AD.
|
||||
</para>
|
||||
</note>
|
||||
|
||||
|
Reference in New Issue
Block a user