#include #include #include #include #include "postgres.h" #include "miscadmin.h" #include "utils/builtins.h" #include "access/xact.h" time_t timestamp_in(const char *timestamp_str) { int4 result; result = nabstimein((char *) timestamp_str); return result; } char * timestamp_out(time_t timestamp) { char *result; int tz; double fsec = 0; struct tm tt, *tm = &tt; char buf[MAXDATELEN + 1]; char zone[MAXDATELEN + 1], *tzn = zone; 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) { time_t sec; sec = GetCurrentTransactionStartTime(); return (sec); } bool timestampeq(time_t t1, time_t t2) { return (abstimeeq(t1, t2)); } bool timestampne(time_t t1, time_t t2) { return (abstimene(t1, t2)); } bool timestamplt(time_t t1, time_t t2) { return (abstimelt(t1, t2)); } bool timestampgt(time_t t1, time_t t2) { return (abstimegt(t1, t2)); } bool timestample(time_t t1, time_t t2) { return (abstimele(t1, t2)); } bool timestampge(time_t t1, time_t t2) { return (abstimege(t1, t2)); } DateTime * timestamp_datetime(time_t timestamp) { return (abstime_datetime((AbsoluteTime) timestamp)); } /* timestamp_datetime() */ time_t datetime_timestamp(DateTime *datetime) { return ((AbsoluteTime) datetime_abstime(datetime)); } /* datetime_timestamp() */