|
|
|
@ -8,7 +8,7 @@ |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* IDENTIFICATION |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.138 2005/04/19 03:13:59 momjian Exp $ |
|
|
|
|
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.139 2005/04/20 17:14:50 tgl Exp $ |
|
|
|
|
* |
|
|
|
|
*------------------------------------------------------------------------- |
|
|
|
|
*/ |
|
|
|
@ -3884,17 +3884,25 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) |
|
|
|
|
/* fractional seconds? */ |
|
|
|
|
if (fsec != 0) |
|
|
|
|
{ |
|
|
|
|
fsec_t sec; |
|
|
|
|
|
|
|
|
|
#ifdef HAVE_INT64_TIMESTAMP |
|
|
|
|
sec = fsec; |
|
|
|
|
if (is_before || ((!is_nonzero) && (tm->tm_sec < 0))) |
|
|
|
|
{ |
|
|
|
|
tm->tm_sec = -tm->tm_sec; |
|
|
|
|
sec = -sec; |
|
|
|
|
is_before = TRUE; |
|
|
|
|
} |
|
|
|
|
else if ((!is_nonzero) && (tm->tm_sec == 0) && (fsec < 0)) |
|
|
|
|
{ |
|
|
|
|
sec = -sec; |
|
|
|
|
is_before = TRUE; |
|
|
|
|
} |
|
|
|
|
sprintf(cp, "%s%d.%02d secs", (is_nonzero ? " " : ""), |
|
|
|
|
tm->tm_sec, (((int) fsec) / 10000)); |
|
|
|
|
tm->tm_sec, (((int) sec) / 10000)); |
|
|
|
|
cp += strlen(cp); |
|
|
|
|
if (!is_nonzero) |
|
|
|
|
is_before = (fsec < 0); |
|
|
|
|
#else |
|
|
|
|
fsec_t sec; |
|
|
|
|
|
|
|
|
|
fsec += tm->tm_sec; |
|
|
|
|
sec = fsec; |
|
|
|
|
if (is_before || ((!is_nonzero) && (fsec < 0))) |
|
|
|
@ -3906,9 +3914,8 @@ EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str) |
|
|
|
|
is_before = (fsec < 0); |
|
|
|
|
#endif |
|
|
|
|
is_nonzero = TRUE; |
|
|
|
|
|
|
|
|
|
/* otherwise, integer seconds only? */ |
|
|
|
|
} |
|
|
|
|
/* otherwise, integer seconds only? */ |
|
|
|
|
else if (tm->tm_sec != 0) |
|
|
|
|
{ |
|
|
|
|
int sec = tm->tm_sec; |
|
|
|
|