]> granicus.if.org Git - postgresql/commitdiff
Repair always-broken date_part('quarter',timestamp).
authorThomas G. Lockhart <lockhart@fourpalms.org>
Wed, 3 Jan 2001 16:48:02 +0000 (16:48 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Wed, 3 Jan 2001 16:48:02 +0000 (16:48 +0000)
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.

src/backend/utils/adt/timestamp.c

index 7ec213baab795d1ff8eecd02d7b59f43f93ed0fe..436eeb5b4daa5be43f3e2ab1d6e731891445e32e 100644 (file)
@@ -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: