Commit a8aa2f95 authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

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 <osadchy@turbo.nsk.su> for the report.
parent 39f987c5
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * 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) ...@@ -1887,9 +1887,9 @@ interval_trunc(PG_FUNCTION_ARGS)
} }
/* isoweek2date() /* isoweek2date()
* * Convert ISO week of year number to date.
* Convert ISO week of year number to date. An year must be already set. * The year field must be specified!
* karel 2000/08/07 * karel 2000/08/07
*/ */
void void
isoweek2date( int woy, int *year, int *mon, int *mday) isoweek2date( int woy, int *year, int *mon, int *mday)
...@@ -2053,7 +2053,7 @@ timestamp_part(PG_FUNCTION_ARGS) ...@@ -2053,7 +2053,7 @@ timestamp_part(PG_FUNCTION_ARGS)
break; break;
case DTK_QUARTER: case DTK_QUARTER:
result = (tm->tm_mon / 4) + 1; result = ((tm->tm_mon - 1) / 3) + 1;
break; break;
case DTK_WEEK: case DTK_WEEK:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment