diff options
author | Bruce Momjian <bruce@momjian.us> | 2005-07-04 14:38:31 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2005-07-04 14:38:31 +0000 |
commit | b9fe8ee225f9fe649dff488e4cdbb3a65003155e (patch) | |
tree | 70c712fbced6a4dd646c15e858c37e6215851813 /src/backend/utils/adt/timestamp.c | |
parent | e652d2c4767518bc264f274f781d5b53aa83f85c (diff) | |
download | postgresql-b9fe8ee225f9fe649dff488e4cdbb3a65003155e.tar.gz postgresql-b9fe8ee225f9fe649dff488e4cdbb3a65003155e.zip |
Fix date_trunct for December dates that are in the next year, e.g.:
SELECT date_trunc('week', '2002-12-31'::date);
Backpatch to 8.0.X.
Per report from Nick Johnson.
Diffstat (limited to 'src/backend/utils/adt/timestamp.c')
-rw-r--r-- | src/backend/utils/adt/timestamp.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 632c97ef2fd..8b64711e635 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.128 2005/06/30 03:48:58 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.129 2005/07/04 14:38:31 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -2793,9 +2793,12 @@ timestamp_trunc(PG_FUNCTION_ARGS) /* * If it is week 52/53 and the month is January, * then the week must belong to the previous year. + * Also, some December dates belong to the next year. */ if (woy >= 52 && tm->tm_mon == 1) --tm->tm_year; + if (woy <= 1 && tm->tm_mon == 12) + ++tm->tm_year; isoweek2date(woy, &(tm->tm_year), &(tm->tm_mon), &(tm->tm_mday)); tm->tm_hour = 0; tm->tm_min = 0; @@ -2924,9 +2927,12 @@ timestamptz_trunc(PG_FUNCTION_ARGS) /* * If it is week 52/53 and the month is January, * then the week must belong to the previous year. + * Also, some December dates belong to the next year. */ if (woy >= 52 && tm->tm_mon == 1) --tm->tm_year; + if (woy <= 1 && tm->tm_mon == 12) + ++tm->tm_year; isoweek2date(woy, &(tm->tm_year), &(tm->tm_mon), &(tm->tm_mday)); tm->tm_hour = 0; tm->tm_min = 0; |