#include "postgres.h"
#include "utils/builtins.h"
-int4
-timestamp_in(char *timestamp_str)
+time_t
+timestamp_in(const char *timestamp_str)
{
struct tm input_time;
int4 result;
/* use mktime(), but make this GMT, not local time */
result = mktime(&input_time);
- result -= timezone;
return result;
}
char *
-timestamp_out(int4 timestamp)
+timestamp_out(time_t timestamp)
{
char *result;
struct tm *time;
- time = gmtime((time_t *)×tamp);
+ time = localtime((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,
return result;
}
-int4
+time_t
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);
+ return(sec);
}
-int4
-timestampeq(int4 t1, int4 t2)
+bool
+timestampeq(time_t t1, time_t t2)
{
- return t1 == t2;
+ return difftime(t1, t2) == 0;
}
-int4
-timestampne(int4 t1, int4 t2)
+bool
+timestampne(time_t t1, time_t t2)
{
- return t1 != t2;
+ return difftime(t1, t2) != 0;
}
-int4
-timestamplt(int4 t1, int4 t2)
+bool
+timestamplt(time_t t1, time_t t2)
{
- return t1 < t2;
+ return difftime(t1, t2) > 0;
}
-int4
-timestampgt(int4 t1, int4 t2)
+bool
+timestampgt(time_t t1, time_t t2)
{
- return t1 > t2;
+ return difftime(t1, t2) < 0;
}
-int4
-timestample(int4 t1, int4 t2)
+bool
+timestample(time_t t1, time_t t2)
{
- return t1 <= t2;
+ return difftime(t1, t2) >= 0;
}
-int4
-timestampge(int4 t1, int4 t2)
+bool
+timestampge(time_t t1, time_t t2)
{
- return t1 >= t2;
+ return difftime(t1, t2) <= 0;
}
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: builtins.h,v 1.12 1997/03/14 23:33:18 scrappy Exp $
+ * $Id: builtins.h,v 1.13 1997/03/25 09:25:33 scrappy Exp $
*
* NOTES
* This should normally only be included by fmgr.h.
extern char *tidout(ItemPointer itemPtr);
/* timestamp.c */
-extern int4 timestamp_in(char *timestamp_str);
-extern char *timestamp_out(int4 timestamp);
-extern int4 now(void);
-int4 timestampeq(int4 t1, int4 t2);
-int4 timestampne(int4 t1, int4 t2);
-int4 timestamplt(int4 t1, int4 t2);
-int4 timestampgt(int4 t1, int4 t2);
-int4 timestample(int4 t1, int4 t2);
-int4 timestampge(int4 t1, int4 t2);
+extern time_t timestamp_in(const char *timestamp_str);
+extern char *timestamp_out(time_t timestamp);
+extern time_t now(void);
+bool timestampeq(time_t t1, time_t t2);
+bool timestampne(time_t t1, time_t t2);
+bool timestamplt(time_t t1, time_t t2);
+bool timestampgt(time_t t1, time_t t2);
+bool timestample(time_t t1, time_t t2);
+bool timestampge(time_t t1, time_t t2);
/* varchar.c */
extern char *bpcharin(char *s, int dummy, int typlen);