postgresql/src/backend/utils/adt/timestamp.c

116 lines
1.8 KiB
C
Raw Normal View History

1997-03-14 06:58:13 +01:00
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
1997-03-14 06:58:13 +01:00
#include "postgres.h"
1999-07-16 07:00:38 +02:00
#include "access/xact.h"
#include "miscadmin.h"
1997-03-14 06:58:13 +01:00
#include "utils/builtins.h"
time_t
timestamp_in(const char *timestamp_str)
1997-03-14 06:58:13 +01:00
{
int4 result;
result = nabstimein((char *) timestamp_str);
1997-03-14 06:58:13 +01:00
return result;
1997-03-14 06:58:13 +01:00
}
char *
timestamp_out(time_t timestamp)
1997-03-14 06:58:13 +01:00
{
char *result;
int tz;
double fsec = 0;
struct tm tt,
*tm = &tt;
char buf[MAXDATELEN + 1];
char zone[MAXDATELEN + 1],
*tzn = zone;
1997-03-14 06:58:13 +01:00
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() */
1997-03-14 06:58:13 +01:00
time_t
1997-03-14 06:58:13 +01:00
now(void)
{
time_t sec;
1997-03-14 06:58:13 +01:00
sec = GetCurrentTransactionStartTime();
1998-09-01 05:29:17 +02:00
return sec;
1997-03-14 06:58:13 +01:00
}
bool
timestampeq(time_t t1, time_t t2)
1997-03-14 06:58:13 +01:00
{
1998-09-01 05:29:17 +02:00
return abstimeeq(t1, t2);
1997-03-14 06:58:13 +01:00
}
bool
timestampne(time_t t1, time_t t2)
1997-03-14 06:58:13 +01:00
{
1998-09-01 05:29:17 +02:00
return abstimene(t1, t2);
1997-03-14 06:58:13 +01:00
}
bool
timestamplt(time_t t1, time_t t2)
1997-03-14 06:58:13 +01:00
{
1998-09-01 05:29:17 +02:00
return abstimelt(t1, t2);
1997-03-14 06:58:13 +01:00
}
bool
timestampgt(time_t t1, time_t t2)
1997-03-14 06:58:13 +01:00
{
1998-09-01 05:29:17 +02:00
return abstimegt(t1, t2);
1997-03-14 06:58:13 +01:00
}
bool
timestample(time_t t1, time_t t2)
1997-03-14 06:58:13 +01:00
{
1998-09-01 05:29:17 +02:00
return abstimele(t1, t2);
1997-03-14 06:58:13 +01:00
}
bool
timestampge(time_t t1, time_t t2)
1997-03-14 06:58:13 +01:00
{
1998-09-01 05:29:17 +02:00
return abstimege(t1, t2);
1997-03-14 06:58:13 +01:00
}
DateTime *
timestamp_datetime(time_t timestamp)
{
1998-09-01 05:29:17 +02:00
return abstime_datetime((AbsoluteTime) timestamp);
} /* timestamp_datetime() */
time_t
datetime_timestamp(DateTime *datetime)
{
1998-09-01 05:29:17 +02:00
return (AbsoluteTime) datetime_abstime(datetime);
} /* datetime_timestamp() */