From a286f7321083f06e395959dffeb9b87f028defa0 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 19 Feb 2003 03:48:11 +0000 Subject: 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 --- doc/src/sgml/datatype.sgml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'doc/src') diff --git a/doc/src/sgml/datatype.sgml b/doc/src/sgml/datatype.sgml index 4f166e06bc7..093ce275af4 100644 --- a/doc/src/sgml/datatype.sgml +++ b/doc/src/sgml/datatype.sgml @@ -1,5 +1,5 @@ @@ -1243,7 +1243,7 @@ SELECT b, char_length(b) FROM test2; both date and time 8 bytes 4713 BC - AD 1465001 + AD 5874897 1 microsecond / 14 digits @@ -1251,7 +1251,7 @@ SELECT b, char_length(b) FROM test2; both date and time 8 bytes 4713 BC - AD 1465001 + AD 5874897 1 microsecond / 14 digits @@ -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. -- cgit v1.2.3