diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 691886658e..fde86061cb 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -29,13 +29,33 @@ timestamp_out(time_t timestamp) char zone[MAXDATELEN + 1], *tzn = zone; - abstime2tm(timestamp, &tz, tm, tzn); - EncodeDateTime(tm, fsec, &tz, &tzn, USE_ISO_DATES, buf); - + switch (timestamp) + { + case EPOCH_ABSTIME: + strcpy(buf, EPOCH); + break; + case INVALID_ABSTIME: + strcpy(buf, INVALID); + break; + case CURRENT_ABSTIME: + strcpy(buf, DCURRENT); + break; + case NOEND_ABSTIME: + strcpy(buf, LATE); + break; + case NOSTART_ABSTIME: + strcpy(buf, EARLY); + break; + default: + abstime2tm(timestamp, &tz, tm, tzn); + EncodeDateTime(tm, fsec, &tz, &tzn, USE_ISO_DATES, buf); + break; + } + result = palloc(strlen(buf) + 1); strcpy(result, buf); return result; -} +} /* timestamp_out() */ time_t now(void) @@ -49,58 +69,40 @@ now(void) bool timestampeq(time_t t1, time_t t2) { -#if FALSE - return(t1 == t2); -#endif return(abstimeeq(t1,t2)); } bool timestampne(time_t t1, time_t t2) { -#if FALSE - return(t1 != t2); -#endif return(abstimene(t1,t2)); } bool timestamplt(time_t t1, time_t t2) { -#if FALSE - return(t1 > t2); -#endif return(abstimelt(t1,t2)); } bool timestampgt(time_t t1, time_t t2) { -#if FALSE - return(t1 < t2); -#endif return(abstimegt(t1,t2)); } bool timestample(time_t t1, time_t t2) { -#if FALSE - return(t1 >= t2); -#endif return(abstimele(t1,t2)); } bool timestampge(time_t t1, time_t t2) { -#if FALSE - return(t1 <= t2); -#endif return(abstimege(t1,t2)); } -DateTime * +DateTime * timestamp_datetime(time_t timestamp) { DateTime *result;