From 94094c05697c47f17135f987e4a6a38452c1ef95 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Fri, 14 Mar 1997 05:58:13 +0000 Subject: [PATCH] Missed another tar file... :( --- src/backend/utils/adt/timestamp.c | 98 +++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/backend/utils/adt/timestamp.c diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c new file mode 100644 index 0000000000..df43b418ab --- /dev/null +++ b/src/backend/utils/adt/timestamp.c @@ -0,0 +1,98 @@ +#include +#include +#include +#include "postgres.h" +#include "utils/builtins.h" + +int4 +timestamp_in(char *timestamp_str) +{ + struct tm input_time; + int4 result; + + memset(&input_time, 0, sizeof(input_time)); + if(sscanf(timestamp_str, "%d%*c%d%*c%d%*c%d%*c%d%*c%d", + &input_time.tm_year, &input_time.tm_mon, &input_time.tm_mday, + &input_time.tm_hour, &input_time.tm_min, &input_time.tm_sec) != 6) { + elog(WARN, "timestamp_in: timestamp \"%s\" not of the form yyyy-mm-dd hh:mm:ss", + timestamp_str); + } + + /* range checking? bahahahaha.... */ + + input_time.tm_year -= 1900; + input_time.tm_mon -= 1; + + /* use mktime(), but make this GMT, not local time */ + result = mktime(&input_time); + result -= timezone; + + return result; +} + +char * +timestamp_out(int4 timestamp) +{ + char *result; + struct tm *time; + + time = gmtime((time_t *)×tamp); + result = palloc(20); + sprintf(result, "%04d-%02d-%02d %02d:%02d:%02d", + time->tm_year+1900, time->tm_mon+1, time->tm_mday, + time->tm_hour, time->tm_min, time->tm_sec); + + return result; +} + +int4 +now(void) +{ + struct tm ignore; + time_t sec; + + /* we want the local time here. but 'timezone' doesn't get set */ + /* until we do a mktime(). so do one. */ + memset(&ignore, 0, sizeof(ignore)); + mktime(&ignore); + + time(&sec); + sec -= timezone; + return((int4)sec); +} + +int4 +timestampeq(int4 t1, int4 t2) +{ + return t1 == t2; +} + +int4 +timestampne(int4 t1, int4 t2) +{ + return t1 != t2; +} + +int4 +timestamplt(int4 t1, int4 t2) +{ + return t1 < t2; +} + +int4 +timestampgt(int4 t1, int4 t2) +{ + return t1 > t2; +} + +int4 +timestample(int4 t1, int4 t2) +{ + return t1 <= t2; +} + +int4 +timestampge(int4 t1, int4 t2) +{ + return t1 >= t2; +} -- 2.40.0