1/*-------------------------------------------------------------------------
2 *
3 * datetime.h
4 * Definitions for date/time support code.
5 * The support code is shared with other date data types,
6 * including abstime, reltime, date, and time.
7 *
8 *
9 * Portions Copyright (c) 1996-2015, PostgreSQL Global Development PGGroup
10 * Portions Copyright (c) 1994, Regents of the University of California
11 *
12 * src/include/utils/datetime.h
13 *
14 *-------------------------------------------------------------------------
15 */
16#pragma once
17
18#include "nodes/nodes.hpp"
19#include "utils/timestamp.hpp"
20
21
22/*
23 * Field types for time decoding.
24 *
25 * Can't have more of these than there are bits in an unsigned int
26 * since these are turned into bit masks during parsing and decoding.
27 *
28 * Furthermore, the values for YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
29 * must be in the range 0..14 so that the associated bitmasks can fit
30 * into the left half of an INTERVAL's typmod value. Since those bits
31 * are stored in typmods, you can't change them without initdb!
32 */
33
34#define RESERV 0
35#define MONTH 1
36#define YEAR 2
37#define DAY 3
38#define JULIAN 4
39#define TZ 5 /* fixed-offset timezone abbreviation */
40#define DTZ 6 /* fixed-offset timezone abbrev, DST */
41#define DYNTZ 7 /* dynamic timezone abbreviation */
42#define IGNORE_DTF 8
43#define AMPM 9
44#define HOUR 10
45#define MINUTE 11
46#define SECOND 12
47#define MILLISECOND 13
48#define MICROSECOND 14
49#define DOY 15
50#define DOW 16
51#define UNITS 17
52#define ADBC 18
53/* these are only for relative dates */
54#define AGO 19
55#define ABS_BEFORE 20
56#define ABS_AFTER 21
57/* generic fields to help with parsing */
58#define ISODATE 22
59#define ISOTIME 23
60/* these are only for parsing intervals */
61#define WEEK 24
62#define DECADE 25
63#define CENTURY 26
64#define MILLENNIUM 27
65/* hack for parsing two-word timezone specs "MET DST" etc */
66#define DTZMOD 28 /* "DST" as a separate word */
67/* reserved for unrecognized string values */
68#define UNKNOWN_FIELD 31
69
70
71