PostgreSQL Source Code  git master
timestamp.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  Interval
 
struct  pg_itm
 
struct  pg_itm_in
 

Macros

#define MAX_TIMESTAMP_PRECISION   6
 
#define MAX_INTERVAL_PRECISION   6
 
#define TS_PREC_INV   1000000.0
 
#define TSROUND(j)   (rint(((double) (j)) * TS_PREC_INV) / TS_PREC_INV)
 
#define DAYS_PER_YEAR   365.25 /* assumes leap year every four years */
 
#define MONTHS_PER_YEAR   12
 
#define DAYS_PER_MONTH   30 /* assumes exactly 30 days per month */
 
#define DAYS_PER_WEEK   7
 
#define HOURS_PER_DAY   24 /* assume no daylight savings time changes */
 
#define SECS_PER_YEAR   (36525 * 864) /* avoid floating-point computation */
 
#define SECS_PER_DAY   86400
 
#define SECS_PER_HOUR   3600
 
#define SECS_PER_MINUTE   60
 
#define MINS_PER_HOUR   60
 
#define USECS_PER_DAY   INT64CONST(86400000000)
 
#define USECS_PER_HOUR   INT64CONST(3600000000)
 
#define USECS_PER_MINUTE   INT64CONST(60000000)
 
#define USECS_PER_SEC   INT64CONST(1000000)
 
#define MAX_TZDISP_HOUR   15 /* maximum allowed hour part */
 
#define TZDISP_LIMIT   ((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR)
 
#define TIMESTAMP_MINUS_INFINITY   PG_INT64_MIN
 
#define TIMESTAMP_INFINITY   PG_INT64_MAX
 
#define DT_NOBEGIN   TIMESTAMP_MINUS_INFINITY
 
#define DT_NOEND   TIMESTAMP_INFINITY
 
#define TIMESTAMP_NOBEGIN(j)    do {(j) = DT_NOBEGIN;} while (0)
 
#define TIMESTAMP_IS_NOBEGIN(j)   ((j) == DT_NOBEGIN)
 
#define TIMESTAMP_NOEND(j)    do {(j) = DT_NOEND;} while (0)
 
#define TIMESTAMP_IS_NOEND(j)   ((j) == DT_NOEND)
 
#define TIMESTAMP_NOT_FINITE(j)   (TIMESTAMP_IS_NOBEGIN(j) || TIMESTAMP_IS_NOEND(j))
 
#define INTERVAL_NOBEGIN(i)
 
#define INTERVAL_IS_NOBEGIN(i)    ((i)->month == PG_INT32_MIN && (i)->day == PG_INT32_MIN && (i)->time == PG_INT64_MIN)
 
#define INTERVAL_NOEND(i)
 
#define INTERVAL_IS_NOEND(i)    ((i)->month == PG_INT32_MAX && (i)->day == PG_INT32_MAX && (i)->time == PG_INT64_MAX)
 
#define INTERVAL_NOT_FINITE(i)   (INTERVAL_IS_NOBEGIN(i) || INTERVAL_IS_NOEND(i))
 
#define JULIAN_MINYEAR   (-4713)
 
#define JULIAN_MINMONTH   (11)
 
#define JULIAN_MINDAY   (24)
 
#define JULIAN_MAXYEAR   (5874898)
 
#define JULIAN_MAXMONTH   (6)
 
#define JULIAN_MAXDAY   (3)
 
#define IS_VALID_JULIAN(y, m, d)
 
#define UNIX_EPOCH_JDATE   2440588 /* == date2j(1970, 1, 1) */
 
#define POSTGRES_EPOCH_JDATE   2451545 /* == date2j(2000, 1, 1) */
 
#define DATETIME_MIN_JULIAN   (0)
 
#define DATE_END_JULIAN   (2147483494) /* == date2j(JULIAN_MAXYEAR, 1, 1) */
 
#define TIMESTAMP_END_JULIAN   (109203528) /* == date2j(294277, 1, 1) */
 
#define MIN_TIMESTAMP   INT64CONST(-211813488000000000)
 
#define END_TIMESTAMP   INT64CONST(9223371331200000000)
 
#define IS_VALID_DATE(d)
 
#define IS_VALID_TIMESTAMP(t)   (MIN_TIMESTAMP <= (t) && (t) < END_TIMESTAMP)
 

Typedefs

typedef int64 Timestamp
 
typedef int64 TimestampTz
 
typedef int64 TimeOffset
 
typedef int32 fsec_t
 

Macro Definition Documentation

◆ DATE_END_JULIAN

#define DATE_END_JULIAN   (2147483494) /* == date2j(JULIAN_MAXYEAR, 1, 1) */

Definition at line 252 of file timestamp.h.

◆ DATETIME_MIN_JULIAN

#define DATETIME_MIN_JULIAN   (0)

Definition at line 251 of file timestamp.h.

◆ DAYS_PER_MONTH

#define DAYS_PER_MONTH   30 /* assumes exactly 30 days per month */

Definition at line 116 of file timestamp.h.

◆ DAYS_PER_WEEK

#define DAYS_PER_WEEK   7

Definition at line 117 of file timestamp.h.

◆ DAYS_PER_YEAR

#define DAYS_PER_YEAR   365.25 /* assumes leap year every four years */

Definition at line 107 of file timestamp.h.

◆ DT_NOBEGIN

#define DT_NOBEGIN   TIMESTAMP_MINUS_INFINITY

Definition at line 156 of file timestamp.h.

◆ DT_NOEND

#define DT_NOEND   TIMESTAMP_INFINITY

Definition at line 157 of file timestamp.h.

◆ END_TIMESTAMP

#define END_TIMESTAMP   INT64CONST(9223371331200000000)

Definition at line 258 of file timestamp.h.

◆ HOURS_PER_DAY

#define HOURS_PER_DAY   24 /* assume no daylight savings time changes */

Definition at line 118 of file timestamp.h.

◆ INTERVAL_IS_NOBEGIN

#define INTERVAL_IS_NOBEGIN (   i)     ((i)->month == PG_INT32_MIN && (i)->day == PG_INT32_MIN && (i)->time == PG_INT64_MIN)

Definition at line 182 of file timestamp.h.

◆ INTERVAL_IS_NOEND

#define INTERVAL_IS_NOEND (   i)     ((i)->month == PG_INT32_MAX && (i)->day == PG_INT32_MAX && (i)->time == PG_INT64_MAX)

Definition at line 192 of file timestamp.h.

◆ INTERVAL_NOBEGIN

#define INTERVAL_NOBEGIN (   i)
Value:
do { \
(i)->time = PG_INT64_MIN; \
(i)->day = PG_INT32_MIN; \
(i)->month = PG_INT32_MIN; \
} while (0)
#define PG_INT64_MIN
Definition: c.h:545
#define PG_INT32_MIN
Definition: c.h:542
int i
Definition: isn.c:72

Definition at line 175 of file timestamp.h.

◆ INTERVAL_NOEND

#define INTERVAL_NOEND (   i)
Value:
do { \
(i)->time = PG_INT64_MAX; \
(i)->day = PG_INT32_MAX; \
(i)->month = PG_INT32_MAX; \
} while (0)
#define PG_INT32_MAX
Definition: c.h:543
#define PG_INT64_MAX
Definition: c.h:546

Definition at line 185 of file timestamp.h.

◆ INTERVAL_NOT_FINITE

#define INTERVAL_NOT_FINITE (   i)    (INTERVAL_IS_NOBEGIN(i) || INTERVAL_IS_NOEND(i))

Definition at line 195 of file timestamp.h.

◆ IS_VALID_DATE

#define IS_VALID_DATE (   d)
Value:
#define DATETIME_MIN_JULIAN
Definition: timestamp.h:251
#define DATE_END_JULIAN
Definition: timestamp.h:252
#define POSTGRES_EPOCH_JDATE
Definition: timestamp.h:235

Definition at line 262 of file timestamp.h.

◆ IS_VALID_JULIAN

#define IS_VALID_JULIAN (   y,
  m,
 
)
Value:
(((y) > JULIAN_MINYEAR || \
((y) == JULIAN_MINYEAR && ((m) >= JULIAN_MINMONTH))) && \
((y) < JULIAN_MAXYEAR || \
((y) == JULIAN_MAXYEAR && ((m) < JULIAN_MAXMONTH))))
#define JULIAN_MAXMONTH
Definition: timestamp.h:224
#define JULIAN_MAXYEAR
Definition: timestamp.h:223
#define JULIAN_MINMONTH
Definition: timestamp.h:221
#define JULIAN_MINYEAR
Definition: timestamp.h:220
int y
Definition: isn.c:71

Definition at line 227 of file timestamp.h.

◆ IS_VALID_TIMESTAMP

#define IS_VALID_TIMESTAMP (   t)    (MIN_TIMESTAMP <= (t) && (t) < END_TIMESTAMP)

Definition at line 267 of file timestamp.h.

◆ JULIAN_MAXDAY

#define JULIAN_MAXDAY   (3)

Definition at line 225 of file timestamp.h.

◆ JULIAN_MAXMONTH

#define JULIAN_MAXMONTH   (6)

Definition at line 224 of file timestamp.h.

◆ JULIAN_MAXYEAR

#define JULIAN_MAXYEAR   (5874898)

Definition at line 223 of file timestamp.h.

◆ JULIAN_MINDAY

#define JULIAN_MINDAY   (24)

Definition at line 222 of file timestamp.h.

◆ JULIAN_MINMONTH

#define JULIAN_MINMONTH   (11)

Definition at line 221 of file timestamp.h.

◆ JULIAN_MINYEAR

#define JULIAN_MINYEAR   (-4713)

Definition at line 220 of file timestamp.h.

◆ MAX_INTERVAL_PRECISION

#define MAX_INTERVAL_PRECISION   6

Definition at line 93 of file timestamp.h.

◆ MAX_TIMESTAMP_PRECISION

#define MAX_TIMESTAMP_PRECISION   6

Definition at line 92 of file timestamp.h.

◆ MAX_TZDISP_HOUR

#define MAX_TZDISP_HOUR   15 /* maximum allowed hour part */

Definition at line 143 of file timestamp.h.

◆ MIN_TIMESTAMP

#define MIN_TIMESTAMP   INT64CONST(-211813488000000000)

Definition at line 256 of file timestamp.h.

◆ MINS_PER_HOUR

#define MINS_PER_HOUR   60

Definition at line 129 of file timestamp.h.

◆ MONTHS_PER_YEAR

#define MONTHS_PER_YEAR   12

Definition at line 108 of file timestamp.h.

◆ POSTGRES_EPOCH_JDATE

#define POSTGRES_EPOCH_JDATE   2451545 /* == date2j(2000, 1, 1) */

Definition at line 235 of file timestamp.h.

◆ SECS_PER_DAY

#define SECS_PER_DAY   86400

Definition at line 126 of file timestamp.h.

◆ SECS_PER_HOUR

#define SECS_PER_HOUR   3600

Definition at line 127 of file timestamp.h.

◆ SECS_PER_MINUTE

#define SECS_PER_MINUTE   60

Definition at line 128 of file timestamp.h.

◆ SECS_PER_YEAR

#define SECS_PER_YEAR   (36525 * 864) /* avoid floating-point computation */

Definition at line 125 of file timestamp.h.

◆ TIMESTAMP_END_JULIAN

#define TIMESTAMP_END_JULIAN   (109203528) /* == date2j(294277, 1, 1) */

Definition at line 253 of file timestamp.h.

◆ TIMESTAMP_INFINITY

#define TIMESTAMP_INFINITY   PG_INT64_MAX

Definition at line 151 of file timestamp.h.

◆ TIMESTAMP_IS_NOBEGIN

#define TIMESTAMP_IS_NOBEGIN (   j)    ((j) == DT_NOBEGIN)

Definition at line 162 of file timestamp.h.

◆ TIMESTAMP_IS_NOEND

#define TIMESTAMP_IS_NOEND (   j)    ((j) == DT_NOEND)

Definition at line 167 of file timestamp.h.

◆ TIMESTAMP_MINUS_INFINITY

#define TIMESTAMP_MINUS_INFINITY   PG_INT64_MIN

Definition at line 150 of file timestamp.h.

◆ TIMESTAMP_NOBEGIN

#define TIMESTAMP_NOBEGIN (   j)     do {(j) = DT_NOBEGIN;} while (0)

Definition at line 159 of file timestamp.h.

◆ TIMESTAMP_NOEND

#define TIMESTAMP_NOEND (   j)     do {(j) = DT_NOEND;} while (0)

Definition at line 164 of file timestamp.h.

◆ TIMESTAMP_NOT_FINITE

#define TIMESTAMP_NOT_FINITE (   j)    (TIMESTAMP_IS_NOBEGIN(j) || TIMESTAMP_IS_NOEND(j))

Definition at line 169 of file timestamp.h.

◆ TS_PREC_INV

#define TS_PREC_INV   1000000.0

Definition at line 99 of file timestamp.h.

◆ TSROUND

#define TSROUND (   j)    (rint(((double) (j)) * TS_PREC_INV) / TS_PREC_INV)

Definition at line 100 of file timestamp.h.

◆ TZDISP_LIMIT

#define TZDISP_LIMIT   ((MAX_TZDISP_HOUR + 1) * SECS_PER_HOUR)

Definition at line 144 of file timestamp.h.

◆ UNIX_EPOCH_JDATE

#define UNIX_EPOCH_JDATE   2440588 /* == date2j(1970, 1, 1) */

Definition at line 234 of file timestamp.h.

◆ USECS_PER_DAY

#define USECS_PER_DAY   INT64CONST(86400000000)

Definition at line 131 of file timestamp.h.

◆ USECS_PER_HOUR

#define USECS_PER_HOUR   INT64CONST(3600000000)

Definition at line 132 of file timestamp.h.

◆ USECS_PER_MINUTE

#define USECS_PER_MINUTE   INT64CONST(60000000)

Definition at line 133 of file timestamp.h.

◆ USECS_PER_SEC

#define USECS_PER_SEC   INT64CONST(1000000)

Definition at line 134 of file timestamp.h.

Typedef Documentation

◆ fsec_t

typedef int32 fsec_t

Definition at line 41 of file timestamp.h.

◆ TimeOffset

typedef int64 TimeOffset

Definition at line 40 of file timestamp.h.

◆ Timestamp

typedef int64 Timestamp

Definition at line 38 of file timestamp.h.

◆ TimestampTz

typedef int64 TimestampTz

Definition at line 39 of file timestamp.h.