diff options
Diffstat (limited to 'src/backend/utils/adt/timestamp.c')
-rw-r--r-- | src/backend/utils/adt/timestamp.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 9151d347ed9..666452d81ef 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -4359,6 +4359,7 @@ date2isoweek(int year, int mon, int mday) /* date2isoyear() * * Returns ISO 8601 year number. + * Note: zero or negative results follow the year-zero-exists convention. */ int date2isoyear(int year, int mon, int mday) @@ -4633,6 +4634,9 @@ timestamp_part(PG_FUNCTION_ARGS) case DTK_ISOYEAR: result = date2isoyear(tm->tm_year, tm->tm_mon, tm->tm_mday); + /* Adjust BC years */ + if (result <= 0) + result -= 1; break; case DTK_DOW: @@ -4829,6 +4833,9 @@ timestamptz_part(PG_FUNCTION_ARGS) case DTK_ISOYEAR: result = date2isoyear(tm->tm_year, tm->tm_mon, tm->tm_mday); + /* Adjust BC years */ + if (result <= 0) + result -= 1; break; case DTK_DOW: |