]> granicus.if.org Git - postgresql/blob - src/backend/utils/adt/timestamp.c
Move some system includes into c.h, and remove duplicates.
[postgresql] / src / backend / utils / adt / timestamp.c
1 #include <time.h>
2 #include <ctype.h>
3
4 #include "postgres.h"
5 #include "access/xact.h"
6 #include "miscadmin.h"
7 #include "utils/builtins.h"
8
9 time_t
10 timestamp_in(const char *timestamp_str)
11 {
12         int4            result;
13
14         result = nabstimein((char *) timestamp_str);
15
16         return result;
17 }
18
19 char *
20 timestamp_out(time_t timestamp)
21 {
22         char       *result;
23         int                     tz;
24         double          fsec = 0;
25         struct tm       tt,
26                            *tm = &tt;
27         char            buf[MAXDATELEN + 1];
28         char            zone[MAXDATELEN + 1],
29                            *tzn = zone;
30
31         switch (timestamp)
32         {
33                 case EPOCH_ABSTIME:
34                         strcpy(buf, EPOCH);
35                         break;
36                 case INVALID_ABSTIME:
37                         strcpy(buf, INVALID);
38                         break;
39                 case CURRENT_ABSTIME:
40                         strcpy(buf, DCURRENT);
41                         break;
42                 case NOEND_ABSTIME:
43                         strcpy(buf, LATE);
44                         break;
45                 case NOSTART_ABSTIME:
46                         strcpy(buf, EARLY);
47                         break;
48                 default:
49                         abstime2tm(timestamp, &tz, tm, tzn);
50                         EncodeDateTime(tm, fsec, &tz, &tzn, USE_ISO_DATES, buf);
51                         break;
52         }
53
54         result = palloc(strlen(buf) + 1);
55         strcpy(result, buf);
56         return result;
57 }       /* timestamp_out() */
58
59 time_t
60 now(void)
61 {
62         time_t          sec;
63
64         sec = GetCurrentTransactionStartTime();
65         return sec;
66 }
67
68 bool
69 timestampeq(time_t t1, time_t t2)
70 {
71         return abstimeeq(t1, t2);
72 }
73
74 bool
75 timestampne(time_t t1, time_t t2)
76 {
77         return abstimene(t1, t2);
78 }
79
80 bool
81 timestamplt(time_t t1, time_t t2)
82 {
83         return abstimelt(t1, t2);
84 }
85
86 bool
87 timestampgt(time_t t1, time_t t2)
88 {
89         return abstimegt(t1, t2);
90 }
91
92 bool
93 timestample(time_t t1, time_t t2)
94 {
95         return abstimele(t1, t2);
96 }
97
98 bool
99 timestampge(time_t t1, time_t t2)
100 {
101         return abstimege(t1, t2);
102 }
103
104 DateTime   *
105 timestamp_datetime(time_t timestamp)
106 {
107         return abstime_datetime((AbsoluteTime) timestamp);
108 }       /* timestamp_datetime() */
109
110 time_t
111 datetime_timestamp(DateTime *datetime)
112 {
113         return (AbsoluteTime) datetime_abstime(datetime);
114 }       /* datetime_timestamp() */