31#define DATEORDER_YMD 0
32#define DATEORDER_DMY 1
33#define DATEORDER_MDY 2
41#define USE_POSTGRES_DATES 0
42#define USE_ISO_DATES 1
43#define USE_SQL_DATES 2
44#define USE_GERMAN_DATES 3
45#define USE_XSD_DATES 4
47#define INTSTYLE_POSTGRES 0
48#define INTSTYLE_POSTGRES_VERBOSE 1
49#define INTSTYLE_SQL_STANDARD 2
50#define INTSTYLE_ISO_8601 3
52#define INTERVAL_FULL_RANGE (0x7FFF)
53#define INTERVAL_MASK(b) (1 << (b))
54#define MAX_INTERVAL_PRECISION 6
56#define DTERR_BAD_FORMAT (-1)
57#define DTERR_FIELD_OVERFLOW (-2)
58#define DTERR_MD_FIELD_OVERFLOW (-3)
59#define DTERR_INTERVAL_OVERFLOW (-4)
60#define DTERR_TZDISP_OVERFLOW (-5)
73#define DCURRENT "current"
75#define INVALID "invalid"
76#define EARLY "-infinity"
77#define LATE "infinity"
80#define TOMORROW "tomorrow"
81#define YESTERDAY "yesterday"
84#define DMICROSEC "usecond"
85#define DMILLISEC "msecond"
86#define DSECOND "second"
87#define DMINUTE "minute"
92#define DQUARTER "quarter"
94#define DDECADE "decade"
95#define DCENTURY "century"
96#define DMILLENNIUM "millennium"
99#define DTIMEZONE "timezone"
140#define MILLISECOND 13
141#define MICROSECOND 14
161#define UNKNOWN_FIELD 31
191#define DTK_YESTERDAY 13
193#define DTK_TOMORROW 15
203#define DTK_QUARTER 24
206#define DTK_CENTURY 27
207#define DTK_MILLENNIUM 28
208#define DTK_MILLISEC 29
209#define DTK_MICROSEC 30
214#define DTK_TZ_HOUR 34
215#define DTK_TZ_MINUTE 35
216#define DTK_ISOYEAR 36
224#define DTK_M(t) (0x01 << (t))
227#define DTK_ALL_SECS_M (DTK_M(SECOND) | DTK_M(MILLISECOND) | DTK_M(MICROSECOND))
228#define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY))
229#define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_ALL_SECS_M)
237#define MAXDATELEN 128
239#define MAXDATEFIELDS 25
274#define FMODULO(t,q,u) \
276 (q) = (((t) < 0) ? ceil((t) / (u)) : floor((t) / (u))); \
277 if ((q) != 0) (t) -= rint((q) * (u)); \
285#define TMODULO(t,q,u) \
288 if ((q) != 0) (t) -= ((q) * (u)); \
296extern const char *
const months[];
297extern const char *
const days[];
298extern const int day_tab[2][13];
307#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
315#define DTERR_BAD_FORMAT (-1)
316#define DTERR_FIELD_OVERFLOW (-2)
317#define DTERR_MD_FIELD_OVERFLOW (-3)
318#define DTERR_INTERVAL_OVERFLOW (-4)
319#define DTERR_TZDISP_OVERFLOW (-5)
323extern void j2date(
int jd,
int *year,
int *month,
int *
day);
324extern int date2j(
int year,
int month,
int day);
326extern int ParseDateTime(
const char *timestr,
char *workbuf,
size_t buflen,
327 char **field,
int *ftype,
328 int maxfields,
int *numfields);
336extern int DecodeInterval(
char **field,
int *ftype,
int nf,
int range,
347 pg_tz *tzp,
int *isdst);
355extern int ValidateDate(
int fmask,
bool isjulian,
bool is2digits,
bool bc,
359 int *offset,
pg_tz **tz);
360extern int DecodeSpecial(
int field,
char *lowtoken,
int *val);
361extern int DecodeUnits(
int field,
char *lowtoken,
int *val);
363extern int j2day(
int jd);
#define pg_attribute_noreturn()
Definition: c.h:180
#define FLEXIBLE_ARRAY_MEMBER
Definition: c.h:351
size_t Size
Definition: c.h:545
const int day_tab[2][13]
Definition: datetime.c:48
int DecodeTimeOnly(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp)
Definition: datetime.c:1707
int DecodeTimezoneAbbrev(int field, char *lowtoken, int *offset, pg_tz **tz)
Definition: datetime.c:2930
int32 fsec_t
Definition: datetime.h:39
int DecodeTimezone(char *str, int *tzp)
Definition: datetime.c:2853
int DetermineTimeZoneAbbrevOffsetTS(TimestampTz ts, const char *abbr, pg_tz *tzp, int *isdst)
int DateStyle
Definition: pg_types.c:88
void InstallTimeZoneAbbrevs(TimeZoneAbbrevTable *tbl)
int ParseDateTime(const char *timestr, char *workbuf, size_t buflen, char **field, int *ftype, int maxfields, int *numfields)
Definition: datetime.c:580
int DetermineTimeZoneOffset(struct pg_tm *tm, pg_tz *tzp)
Definition: datetime.c:1471
void AdjustTimestampForTypmod(Timestamp *time, int32 typmod)
Definition: pg_types.c:463
int DecodeSpecial(int field, char *lowtoken, int *val)
Definition: datetime.c:2984
void EncodeSpecialTimestamp(Timestamp dt, char *str)
Definition: timestamp.c:37
bool CheckDateTokenTables(void)
int DecodeDateTime(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp)
Definition: datetime.c:800
void EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, int style, char *str)
Definition: datetime.c:3915
int j2day(int jd)
Definition: datetime.c:314
int ValidateDate(int fmask, bool isjulian, bool is2digits, bool bc, struct pg_tm *tm)
Definition: datetime.c:2430
struct TimeZoneAbbrevTable TimeZoneAbbrevTable
void j2date(int jd, int *year, int *month, int *day)
Definition: datetime.c:282
void GetCurrentDateTime(struct pg_tm *tm)
Definition: datetime.c:335
void EncodeDateTime(struct pg_tm *tm, fsec_t fsec, bool print_tz, int tz, const char *tzn, int style, char *str)
Definition: datetime.c:3944
void EncodeInterval(struct pg_tm *tm, fsec_t fsec, int style, char *str)
Definition: datetime.c:4181
void DateTimeParseError(int dterr, const char *str, const char *datatype) pg_attribute_noreturn()
Definition: datetime.c:3707
int DecodeInterval(char **field, int *ftype, int nf, int range, int *dtype, struct pg_tm *tm, fsec_t *fsec)
Definition: datetime.c:3038
TimeZoneAbbrevTable * ConvertTimeZoneAbbrevs(struct tzEntry *abbrevs, int n)
int DecodeISO8601Interval(char *str, int *dtype, struct pg_tm *tm, fsec_t *fsec)
Definition: datetime.c:3462
const char *const months[]
Definition: datetime.c:54
bool AdjustTimestampForTypmodError(Timestamp *time, int32 typmod, bool *error)
Definition: pg_types.c:410
int DecodeUnits(int field, char *lowtoken, int *val)
Definition: datetime.c:3670
int IntervalStyle
Definition: pg_types.c:90
void EncodeDateOnly(struct pg_tm *tm, int style, char *str)
Definition: datetime.c:3831
struct DynamicZoneAbbrev DynamicZoneAbbrev
int date2j(int year, int month, int day)
Definition: datetime.c:257
void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp)
Definition: datetime.c:356
int DateOrder
Definition: pg_types.c:89
const char *const days[]
Definition: datetime.c:57
#define TOKMAXLEN
Definition: datetime.h:241
int DetermineTimeZoneAbbrevOffset(struct pg_tm *tm, const char *abbr, pg_tz *tzp)
Definition: datetime.c:1630
static struct pg_tm tm
Definition: localtime.c:104
INSERT INTO trips SELECT day
Definition: meos_disassemble_berlinmod.txt:22
int64 Timestamp
Definition: pg_ext_defs.in.h:18
int64 TimestampTz
Definition: pg_ext_defs.in.h:19
int32 fsec_t
Definition: pg_ext_defs.in.h:21
signed int int32
Definition: pg_ext_defs.in.h:8
char zone[FLEXIBLE_ARRAY_MEMBER]
Definition: datetime.h:264
pg_tz * tz
Definition: datetime.h:263
Definition: datetime.h:262
int numabbrevs
Definition: datetime.h:255
Size tblsize
Definition: datetime.h:254
datetkn abbrevs[FLEXIBLE_ARRAY_MEMBER]
Definition: datetime.h:256
Definition: datetime.h:253
int32 value
Definition: datetime.h:248
char type
Definition: datetime.h:247
Definition: datetime.h:245