summaryrefslogtreecommitdiff
path: root/src/include/utils/datetime.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/utils/datetime.h')
-rw-r--r--src/include/utils/datetime.h296
1 files changed, 0 insertions, 296 deletions
diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h
deleted file mode 100644
index 08773fe0b15..00000000000
--- a/src/include/utils/datetime.h
+++ /dev/null
@@ -1,296 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * datetime.h
- * Definitions for the date/time and other date/time support code.
- * The support code is shared with other date data types,
- * including abstime, reltime, date, and time.
- *
- *
- * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * $Id: datetime.h,v 1.32 2002/06/20 20:29:52 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
-#ifndef DATETIME_H
-#define DATETIME_H
-
-#include <time.h>
-#include <math.h>
-#include <limits.h>
-
-#include "utils/timestamp.h"
-
-
-/* ----------------------------------------------------------------
- * time types + support macros
- *
- * String definitions for standard time quantities.
- *
- * These strings are the defaults used to form output time strings.
- * Other alternate forms are hardcoded into token tables in datetime.c.
- * ----------------------------------------------------------------
- */
-
-#define DAGO "ago"
-#define DCURRENT "current"
-#define EPOCH "epoch"
-#define INVALID "invalid"
-#define EARLY "-infinity"
-#define LATE "infinity"
-#define NOW "now"
-#define TODAY "today"
-#define TOMORROW "tomorrow"
-#define YESTERDAY "yesterday"
-#define ZULU "zulu"
-
-#define DMICROSEC "usecond"
-#define DMILLISEC "msecond"
-#define DSECOND "second"
-#define DMINUTE "minute"
-#define DHOUR "hour"
-#define DDAY "day"
-#define DWEEK "week"
-#define DMONTH "month"
-#define DQUARTER "quarter"
-#define DYEAR "year"
-#define DDECADE "decade"
-#define DCENTURY "century"
-#define DMILLENNIUM "millennium"
-#define DA_D "ad"
-#define DB_C "bc"
-#define DTIMEZONE "timezone"
-
-/*
- * Fundamental time field definitions for parsing.
- *
- * Meridian: am, pm, or 24-hour style.
- * Millennium: ad, bc
- */
-
-#define AM 0
-#define PM 1
-#define HR24 2
-
-#define AD 0
-#define BC 1
-
-/*
- * Fields for time decoding.
- *
- * Can't have more of these than there are bits in an unsigned int
- * since these are turned into bit masks during parsing and decoding.
- *
- * Furthermore, the values for YEAR, MONTH, DAY, HOUR, MINUTE, SECOND
- * must be in the range 0..14 so that the associated bitmasks can fit
- * into the left half of an INTERVAL's typmod value.
- */
-
-#define RESERV 0
-#define MONTH 1
-#define YEAR 2
-#define DAY 3
-#define JULIAN 4
-#define TZ 5
-#define DTZ 6
-#define DTZMOD 7
-#define IGNORE_DTF 8
-#define AMPM 9
-#define HOUR 10
-#define MINUTE 11
-#define SECOND 12
-#define DOY 13
-#define DOW 14
-#define UNITS 15
-#define ADBC 16
-/* these are only for relative dates */
-#define AGO 17
-#define ABS_BEFORE 18
-#define ABS_AFTER 19
-/* generic fields to help with parsing */
-#define ISODATE 20
-#define ISOTIME 21
-/* reserved for unrecognized string values */
-#define UNKNOWN_FIELD 31
-
-/*
- * Token field definitions for time parsing and decoding.
- * These need to fit into the datetkn table type.
- * At the moment, that means keep them within [-127,127].
- * These are also used for bit masks in DecodeDateDelta()
- * so actually restrict them to within [0,31] for now.
- * - thomas 97/06/19
- * Not all of these fields are used for masks in DecodeDateDelta
- * so allow some larger than 31. - thomas 1997-11-17
- */
-
-#define DTK_NUMBER 0
-#define DTK_STRING 1
-
-#define DTK_DATE 2
-#define DTK_TIME 3
-#define DTK_TZ 4
-#define DTK_AGO 5
-
-#define DTK_SPECIAL 6
-#define DTK_INVALID 7
-#define DTK_CURRENT 8
-#define DTK_EARLY 9
-#define DTK_LATE 10
-#define DTK_EPOCH 11
-#define DTK_NOW 12
-#define DTK_YESTERDAY 13
-#define DTK_TODAY 14
-#define DTK_TOMORROW 15
-#define DTK_ZULU 16
-
-#define DTK_DELTA 17
-#define DTK_SECOND 18
-#define DTK_MINUTE 19
-#define DTK_HOUR 20
-#define DTK_DAY 21
-#define DTK_WEEK 22
-#define DTK_MONTH 23
-#define DTK_QUARTER 24
-#define DTK_YEAR 25
-#define DTK_DECADE 26
-#define DTK_CENTURY 27
-#define DTK_MILLENNIUM 28
-#define DTK_MILLISEC 29
-#define DTK_MICROSEC 30
-#define DTK_JULIAN 31
-
-#define DTK_DOW 32
-#define DTK_DOY 33
-#define DTK_TZ_HOUR 34
-#define DTK_TZ_MINUTE 35
-
-
-/*
- * Bit mask definitions for time parsing.
- */
-
-#define DTK_M(t) (0x01 << (t))
-
-#define DTK_DATE_M (DTK_M(YEAR) | DTK_M(MONTH) | DTK_M(DAY))
-#define DTK_TIME_M (DTK_M(HOUR) | DTK_M(MINUTE) | DTK_M(SECOND))
-
-#define MAXDATELEN 51 /* maximum possible length of an input
- * date string (not counting tr. null) */
-#define MAXDATEFIELDS 25 /* maximum possible number of fields in a
- * date string */
-#define TOKMAXLEN 10 /* only this many chars are stored in
- * datetktbl */
-
-/* keep this struct small; it gets used a lot */
-typedef struct
-{
-#if defined(_AIX)
- char *token;
-#else
- char token[TOKMAXLEN];
-#endif /* _AIX */
- char type;
- char value; /* this may be unsigned, alas */
-} datetkn;
-
-
-/* TMODULO()
- * Macro to replace modf(), which is broken on some platforms.
- * t = input and remainder
- * q = integer part
- * u = divisor
- */
-#ifdef HAVE_INT64_TIMESTAMP
-#define TMODULO(t,q,u) \
-do { \
- q = (t / u); \
- if (q != 0) t -= (q * u); \
-} while(0)
-#else
-#define TMODULO(t,q,u) \
-do { \
- q = ((t < 0)? ceil(t / u): floor(t / u)); \
- if (q != 0) t -= rint(q * u); \
-} while(0)
-#endif
-
-/* Global variable holding time zone information. */
-#if defined(__CYGWIN__) || defined(N_PLAT_NLM)
-#define TIMEZONE_GLOBAL _timezone
-#else
-#define TIMEZONE_GLOBAL timezone
-#endif
-
-/*
- * Date/time validation
- * Include check for leap year.
- */
-
-extern int day_tab[2][13];
-
-#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))
-
-/* Julian date support for date2j() and j2date()
- * Set the minimum year to one greater than the year of the first valid day
- * to avoid having to check year and day both. - tgl 97/05/08
- */
-
-#define JULIAN_MINYEAR (-4713)
-#define JULIAN_MINMONTH (11)
-#define JULIAN_MINDAY (23)
-
-#define IS_VALID_JULIAN(y,m,d) (((y) > JULIAN_MINYEAR) \
- || (((y) == JULIAN_MINYEAR) && (((m) > JULIAN_MINMONTH) \
- || (((m) == JULIAN_MINMONTH) && ((d) >= JULIAN_MINDAY)))))
-
-#define UTIME_MINYEAR (1901)
-#define UTIME_MINMONTH (12)
-#define UTIME_MINDAY (14)
-#define UTIME_MAXYEAR (2038)
-#define UTIME_MAXMONTH (01)
-#define UTIME_MAXDAY (18)
-
-#define IS_VALID_UTIME(y,m,d) ((((y) > UTIME_MINYEAR) \
- || (((y) == UTIME_MINYEAR) && (((m) > UTIME_MINMONTH) \
- || (((m) == UTIME_MINMONTH) && ((d) >= UTIME_MINDAY))))) \
- && (((y) < UTIME_MAXYEAR) \
- || (((y) == UTIME_MAXYEAR) && (((m) < UTIME_MAXMONTH) \
- || (((m) == UTIME_MAXMONTH) && ((d) <= UTIME_MAXDAY))))))
-
-
-extern void GetCurrentDateTime(struct tm * tm);
-extern void GetCurrentTimeUsec(struct tm * tm, fsec_t *fsec);
-extern void j2date(int jd, int *year, int *month, int *day);
-extern int date2j(int year, int month, int day);
-
-extern int ParseDateTime(char *timestr, char *lowstr,
- char **field, int *ftype,
- int maxfields, int *numfields);
-extern int DecodeDateTime(char **field, int *ftype,
- int nf, int *dtype,
- struct tm * tm, fsec_t *fsec, int *tzp);
-
-extern int DecodeTimeOnly(char **field, int *ftype,
- int nf, int *dtype,
- struct tm * tm, fsec_t *fsec, int *tzp);
-
-extern int DecodeInterval(char **field, int *ftype,
- int nf, int *dtype,
- struct tm * tm, fsec_t *fsec);
-
-extern int DetermineLocalTimeZone(struct tm * tm);
-
-extern int EncodeDateOnly(struct tm * tm, int style, char *str);
-extern int EncodeTimeOnly(struct tm * tm, fsec_t fsec, int *tzp, int style, char *str);
-extern int EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str);
-extern int EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str);
-
-extern int DecodeSpecial(int field, char *lowtoken, int *val);
-extern int DecodeUnits(int field, char *lowtoken, int *val);
-extern bool ClearDateCache(bool, bool, bool);
-
-extern int j2day(int jd);
-
-#endif /* DATETIME_H */