From a8aa2f95b45a8ab95c489194f89c3bfcd4acf8cd Mon Sep 17 00:00:00 2001 From: "Thomas G. Lockhart" Date: Wed, 3 Jan 2001 16:48:02 +0000 Subject: [PATCH] Repair always-broken date_part('quarter',timestamp). Previous result did not have correct month boundaries so anything near edge cases was suspect (e.g. April was in Q1 and July, August were lumped into Q2). Thanks to Denis Osadchy for the report. --- src/backend/utils/adt/timestamp.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 7ec213baab..436eeb5b4d 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.40 2000/12/07 18:38:59 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.41 2001/01/03 16:48:02 thomas Exp $ * *------------------------------------------------------------------------- */ @@ -1887,9 +1887,9 @@ interval_trunc(PG_FUNCTION_ARGS) } /* isoweek2date() - * - * Convert ISO week of year number to date. An year must be already set. - * karel 2000/08/07 + * Convert ISO week of year number to date. + * The year field must be specified! + * karel 2000/08/07 */ void isoweek2date( int woy, int *year, int *mon, int *mday) @@ -2053,7 +2053,7 @@ timestamp_part(PG_FUNCTION_ARGS) break; case DTK_QUARTER: - result = (tm->tm_mon / 4) + 1; + result = ((tm->tm_mon - 1) / 3) + 1; break; case DTK_WEEK: