From a094c8ff53523e88ff9dd28ad467618039e27b58 Mon Sep 17 00:00:00 2001
From: Tom Lane
Date: Tue, 29 Sep 2020 13:48:06 -0400
Subject: Fix make_timestamp[tz] to accept negative years as meaning BC.
Previously we threw an error. But make_date already allowed the case,
so it is inconsistent as well as unhelpful for make_timestamp not to.
Both functions continue to reject year zero.
Code and test fixes by Peter Eisentraut, doc changes by me
Discussion: https://postgr.es/m/13c0992c-f15a-a0ca-d839-91d3efd965d9@2ndquadrant.com
---
doc/src/sgml/func.sgml | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
(limited to 'doc/src')
diff --git a/doc/src/sgml/func.sgml b/doc/src/sgml/func.sgml
index 461b748d890..62dd7382303 100644
--- a/doc/src/sgml/func.sgml
+++ b/doc/src/sgml/func.sgml
@@ -8939,6 +8939,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}');
Create date from year, month and day fields
+ (negative years signify BC)
make_date(2013, 7, 15)
@@ -9004,6 +9005,7 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}');
Create timestamp from year, month, day, hour, minute and seconds fields
+ (negative years signify BC)
make_timestamp(2013, 7, 15, 8, 15, 23.5)
@@ -9027,12 +9029,18 @@ SELECT regexp_match('abc01234xyz', '(?:(.*?)(\d+)(.*)){1,1}');
Create timestamp with time zone from year, month, day, hour, minute
- and seconds fields; if timezone is not
- specified, the current time zone is used
+ and seconds fields (negative years signify BC).
+ If timezone is not
+ specified, the current time zone is used; the examples assume the
+ session time zone is Europe/London
make_timestamptz(2013, 7, 15, 8, 15, 23.5)
2013-07-15 08:15:23.5+01
+
+
+ make_timestamptz(2013, 7, 15, 8, 15, 23.5, 'America/New_York')
+ 2013-07-15 13:15:23.5+01
--
cgit v1.2.3