]> granicus.if.org Git - postgresql/commitdiff
Display only 9 subsecond digits instead of 10 for time values, for
authorBruce Momjian <bruce@momjian.us>
Fri, 27 May 2005 21:31:23 +0000 (21:31 +0000)
committerBruce Momjian <bruce@momjian.us>
Fri, 27 May 2005 21:31:23 +0000 (21:31 +0000)
consistency and to prevent rounding for days < 30.  Also round off all
trailing zeros, rather than leaving an even number of digits.

src/backend/utils/adt/datetime.c
src/interfaces/ecpg/pgtypeslib/interval.c
src/test/regress/expected/horology.out

index 53026363a13135978322dff203560665e1ce5428..260c8abb3416a49b64f934f792a19a0256ef6a4d 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.149 2005/05/27 15:16:44 momjian Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.150 2005/05/27 21:31:23 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -3461,12 +3461,9 @@ EncodeTimeOnly(struct pg_tm * tm, fsec_t fsec, int *tzp, int style, char *str)
 #ifdef HAVE_INT64_TIMESTAMP
                sprintf(str + strlen(str), ":%02d.%06d", tm->tm_sec, fsec);
 #else
-               sprintf(str + strlen(str), ":%013.10f", tm->tm_sec + fsec);
+               sprintf(str + strlen(str), ":%012.9f", tm->tm_sec + fsec);
 #endif
-               /* chop off trailing pairs of zeros... */
-               while (strcmp((str + strlen(str) - 2), "00") == 0 &&
-                       *(str + strlen(str) - 3) != '.')
-                       *(str + strlen(str) - 2) = '\0';
+               TrimTrailingZeros(str);
        }
        else
                sprintf(str + strlen(str), ":%02d", tm->tm_sec);
@@ -3804,7 +3801,7 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str)
                                        sprintf(cp, ".%06d", Abs(fsec));
 #else
                                        fsec += tm->tm_sec;
-                                       sprintf(cp, ":%013.10f", fabs(fsec));
+                                       sprintf(cp, ":%012.9f", fabs(fsec));
 #endif
                                        TrimTrailingZeros(cp);
                                        cp += strlen(cp);
index f5b2b2573f2e237765eb1cfb4c2f05e68669dfc2..a5e9673b10d147aed0a3803f15fd89abfe626538 100644 (file)
@@ -511,7 +511,7 @@ EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str)
                                        sprintf(cp, ".%06d", Abs(fsec));
 #else
                                        fsec += tm->tm_sec;
-                                       sprintf(cp, ":%013.10f", fabs(fsec));
+                                       sprintf(cp, ":%012.9f", fabs(fsec));
 #endif
                                        TrimTrailingZeros(cp);
                                        cp += strlen(cp);
index ca8bc3d0e5ca536d80a11a7cdb2eb4e4e28441fc..c0a7f6e5b83c6206e782d1c834d4e5e655aaa1b2 100644 (file)
@@ -205,62 +205,62 @@ SET DateStyle = 'ISO';
 -- As of 7.4, allow time without time zone having a time zone specified
 SELECT time without time zone '040506.789+08';
      time      
----------------
- 04:05:06.7890
+--------------
+ 04:05:06.789
 (1 row)
 
 SELECT time without time zone '040506.789-08';
      time      
----------------
- 04:05:06.7890
+--------------
+ 04:05:06.789
 (1 row)
 
 SELECT time without time zone 'T040506.789+08';
      time      
----------------
- 04:05:06.7890
+--------------
+ 04:05:06.789
 (1 row)
 
 SELECT time without time zone 'T040506.789-08';
      time      
----------------
- 04:05:06.7890
+--------------
+ 04:05:06.789
 (1 row)
 
 SELECT time with time zone '040506.789+08';
       timetz      
-------------------
- 04:05:06.7890+08
+-----------------
+ 04:05:06.789+08
 (1 row)
 
 SELECT time with time zone '040506.789-08';
       timetz      
-------------------
- 04:05:06.7890-08
+-----------------
+ 04:05:06.789-08
 (1 row)
 
 SELECT time with time zone 'T040506.789+08';
       timetz      
-------------------
- 04:05:06.7890+08
+-----------------
+ 04:05:06.789+08
 (1 row)
 
 SELECT time with time zone 'T040506.789-08';
       timetz      
-------------------
- 04:05:06.7890-08
+-----------------
+ 04:05:06.789-08
 (1 row)
 
 SELECT time with time zone 'T040506.789 +08';
       timetz      
-------------------
- 04:05:06.7890+08
+-----------------
+ 04:05:06.789+08
 (1 row)
 
 SELECT time with time zone 'T040506.789 -08';
       timetz      
-------------------
- 04:05:06.7890-08
+-----------------
+ 04:05:06.789-08
 (1 row)
 
 SET DateStyle = 'Postgres, MDY';