*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.116 2005/07/21 18:06:12 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.117 2005/07/22 03:46:33 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#endif
-static int time2tm(TimeADT time, struct pg_tm * tm, fsec_t *fsec);
-static int timetz2tm(TimeTzADT *time, struct pg_tm * tm, fsec_t *fsec, int *tzp);
-static int tm2time(struct pg_tm * tm, fsec_t fsec, TimeADT *result);
-static int tm2timetz(struct pg_tm * tm, fsec_t fsec, int tz, TimeTzADT *result);
+static int time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec);
+static int timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp);
+static int tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result);
+static int tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result);
static void AdjustTimeForTypmod(TimeADT *time, int32 typmod);
/*****************************************************************************
* Convert a tm structure to a time data type.
*/
static int
-tm2time(struct pg_tm * tm, fsec_t fsec, TimeADT *result)
+tm2time(struct pg_tm *tm, fsec_t fsec, TimeADT *result)
{
#ifdef HAVE_INT64_TIMESTAMP
*result = ((((tm->tm_hour * MINS_PER_HOUR + tm->tm_min) * SECS_PER_MINUTE) + tm->tm_sec)
* local time zone. If out of this range, leave as GMT. - tgl 97/05/27
*/
static int
-time2tm(TimeADT time, struct pg_tm * tm, fsec_t *fsec)
+time2tm(TimeADT time, struct pg_tm *tm, fsec_t *fsec)
{
#ifdef HAVE_INT64_TIMESTAMP
tm->tm_hour = time / USECS_PER_HOUR;
* Convert a tm structure to a time data type.
*/
static int
-tm2timetz(struct pg_tm * tm, fsec_t fsec, int tz, TimeTzADT *result)
+tm2timetz(struct pg_tm *tm, fsec_t fsec, int tz, TimeTzADT *result)
{
#ifdef HAVE_INT64_TIMESTAMP
result->time = ((((tm->tm_hour * MINS_PER_HOUR + tm->tm_min) * SECS_PER_MINUTE) + tm->tm_sec) *
* Convert TIME WITH TIME ZONE data type to POSIX time structure.
*/
static int
-timetz2tm(TimeTzADT *time, struct pg_tm * tm, fsec_t *fsec, int *tzp)
+timetz2tm(TimeTzADT *time, struct pg_tm *tm, fsec_t *fsec, int *tzp)
{
#ifdef HAVE_INT64_TIMESTAMP
int64 trem = time->time;
TimestampTz result;
#ifdef HAVE_INT64_TIMESTAMP
- result = (date * USECS_PER_DAY + time->time) + time->zone * USECS_PER_SEC;
+ result = date * USECS_PER_DAY + time->time + time->zone * USECS_PER_SEC;
#else
result = date * (double)SECS_PER_DAY + time->time + time->zone;
#endif
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.155 2005/07/21 18:06:12 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.156 2005/07/22 03:46:33 momjian Exp $
*
*-------------------------------------------------------------------------
*/
static int DecodeNumber(int flen, char *field, bool haveTextMonth,
int fmask, int *tmask,
- struct pg_tm * tm, fsec_t *fsec, int *is2digits);
+ struct pg_tm *tm, fsec_t *fsec, int *is2digits);
static int DecodeNumberField(int len, char *str,
int fmask, int *tmask,
- struct pg_tm * tm, fsec_t *fsec, int *is2digits);
+ struct pg_tm *tm, fsec_t *fsec, int *is2digits);
static int DecodeTime(char *str, int fmask, int *tmask,
- struct pg_tm * tm, fsec_t *fsec);
+ struct pg_tm *tm, fsec_t *fsec);
static int DecodeTimezone(char *str, int *tzp);
static int DecodePosixTimezone(char *str, int *tzp);
static datetkn *datebsearch(char *key, datetkn *base, unsigned int nel);
-static int DecodeDate(char *str, int fmask, int *tmask, struct pg_tm * tm);
+static int DecodeDate(char *str, int fmask, int *tmask, struct pg_tm *tm);
static void TrimTrailingZeros(char *str);
* Get the transaction start time ("now()") broken down as a struct pg_tm.
*/
void
-GetCurrentDateTime(struct pg_tm * tm)
+GetCurrentDateTime(struct pg_tm *tm)
{
int tz;
fsec_t fsec;
* including fractional seconds and timezone offset.
*/
void
-GetCurrentTimeUsec(struct pg_tm * tm, fsec_t *fsec, int *tzp)
+GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp)
{
int tz;
*/
int
DecodeDateTime(char **field, int *ftype, int nf,
- int *dtype, struct pg_tm * tm, fsec_t *fsec, int *tzp)
+ int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp)
{
int fmask = 0,
tmask,
* of mktime(), anyway.
*/
int
-DetermineLocalTimeZone(struct pg_tm * tm)
+DetermineLocalTimeZone(struct pg_tm *tm)
{
int date,
sec;
*/
int
DecodeTimeOnly(char **field, int *ftype, int nf,
- int *dtype, struct pg_tm * tm, fsec_t *fsec, int *tzp)
+ int *dtype, struct pg_tm *tm, fsec_t *fsec, int *tzp)
{
int fmask = 0,
tmask,
* Insist on a complete set of fields.
*/
static int
-DecodeDate(char *str, int fmask, int *tmask, struct pg_tm * tm)
+DecodeDate(char *str, int fmask, int *tmask, struct pg_tm *tm)
{
fsec_t fsec;
int nf = 0;
* can be used to represent time spans.
*/
static int
-DecodeTime(char *str, int fmask, int *tmask, struct pg_tm * tm, fsec_t *fsec)
+DecodeTime(char *str, int fmask, int *tmask, struct pg_tm *tm, fsec_t *fsec)
{
char *cp;
*/
static int
DecodeNumber(int flen, char *str, bool haveTextMonth, int fmask,
- int *tmask, struct pg_tm * tm, fsec_t *fsec, int *is2digits)
+ int *tmask, struct pg_tm *tm, fsec_t *fsec, int *is2digits)
{
int val;
char *cp;
*/
static int
DecodeNumberField(int len, char *str, int fmask,
- int *tmask, struct pg_tm * tm, fsec_t *fsec, int *is2digits)
+ int *tmask, struct pg_tm *tm, fsec_t *fsec, int *is2digits)
{
char *cp;
* preceding an hh:mm:ss field. - thomas 1998-04-30
*/
int
-DecodeInterval(char **field, int *ftype, int nf, int *dtype, struct pg_tm * tm, fsec_t *fsec)
+DecodeInterval(char **field, int *ftype, int nf, int *dtype, struct pg_tm *tm, fsec_t *fsec)
{
int is_before = FALSE;
char *cp;
* Encode date as local time.
*/
int
-EncodeDateOnly(struct pg_tm * tm, int style, char *str)
+EncodeDateOnly(struct pg_tm *tm, int style, char *str)
{
if (tm->tm_mon < 1 || tm->tm_mon > MONTHS_PER_YEAR)
return -1;
* Encode time fields only.
*/
int
-EncodeTimeOnly(struct pg_tm * tm, fsec_t fsec, int *tzp, int style, char *str)
+EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, int *tzp, int style, char *str)
{
if (tm->tm_hour < 0 || tm->tm_hour > HOURS_PER_DAY)
return -1;
* European - dd/mm/yyyy
*/
int
-EncodeDateTime(struct pg_tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str)
+EncodeDateTime(struct pg_tm *tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str)
{
int day,
hour,
* - thomas 1998-04-30
*/
int
-EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str)
+EncodeInterval(struct pg_tm *tm, fsec_t fsec, int style, char *str)
{
int is_before = FALSE;
int is_nonzero = FALSE;
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.139 2005/07/21 18:06:12 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.140 2005/07/22 03:46:33 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* Function prototypes -- internal to this file only
*/
-static AbsoluteTime tm2abstime(struct pg_tm * tm, int tz);
-static void reltime2tm(RelativeTime time, struct pg_tm * tm);
+static AbsoluteTime tm2abstime(struct pg_tm *tm, int tz);
+static void reltime2tm(RelativeTime time, struct pg_tm *tm);
static int istinterval(char *i_string,
AbsoluteTime *i_start,
AbsoluteTime *i_end);
void
-abstime2tm(AbsoluteTime _time, int *tzp, struct pg_tm * tm, char **tzn)
+abstime2tm(AbsoluteTime _time, int *tzp, struct pg_tm *tm, char **tzn)
{
pg_time_t time = (pg_time_t) _time;
struct pg_tm *tx;
* Note that tm has full year (not 1900-based) and 1-based month.
*/
static AbsoluteTime
-tm2abstime(struct pg_tm * tm, int tz)
+tm2abstime(struct pg_tm *tm, int tz)
{
int day;
AbsoluteTime sec;
static void
-reltime2tm(RelativeTime time, struct pg_tm * tm)
+reltime2tm(RelativeTime time, struct pg_tm *tm)
{
double dtime = time;
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.138 2005/07/21 18:06:12 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.139 2005/07/22 03:46:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* We have a brute force time zone per SQL99? Then use it without
* change since we have already rotated to the time zone.
*/
- if ((attimezone==NULL) && HasCTZSet)
+ if ((attimezone == NULL) && HasCTZSet)
{
*tzp = CTimeZone;
tm->tm_isdst = 0;
utime = (pg_time_t) dt;
if ((Timestamp) utime == dt)
{
- struct pg_tm *tx = pg_localtime(&utime, (attimezone!=NULL)?attimezone:global_timezone);
+ struct pg_tm *tx = pg_localtime(&utime, (attimezone != NULL) ?
+ attimezone : global_timezone);
tm->tm_year = tx->tm_year + 1900;
tm->tm_mon = tx->tm_mon + 1;
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/include/pgtime.h,v 1.8 2005/06/15 00:34:09 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/pgtime.h,v 1.9 2005/07/22 03:46:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
int *after_isdst,
const pg_tz *tz);
extern size_t pg_strftime(char *s, size_t max, const char *format,
- const struct pg_tm * tm);
+ const struct pg_tm *tm);
extern void pg_timezone_initialize(void);
extern pg_tz *pg_tzset(const char *tzname);
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/datetime.h,v 1.54 2005/05/26 02:04:14 neilc Exp $
+ * $PostgreSQL: pgsql/src/include/utils/datetime.h,v 1.55 2005/07/22 03:46:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#define DTERR_TZDISP_OVERFLOW (-5)
-extern void GetCurrentDateTime(struct pg_tm * tm);
-extern void GetCurrentTimeUsec(struct pg_tm * tm, fsec_t *fsec, int *tzp);
+extern void GetCurrentDateTime(struct pg_tm *tm);
+extern void GetCurrentTimeUsec(struct pg_tm *tm, fsec_t *fsec, int *tzp);
extern void j2date(int jd, int *year, int *month, int *day);
extern int date2j(int year, int month, int day);
int maxfields, int *numfields);
extern int DecodeDateTime(char **field, int *ftype,
int nf, int *dtype,
- struct pg_tm * tm, fsec_t *fsec, int *tzp);
+ struct pg_tm *tm, fsec_t *fsec, int *tzp);
extern int DecodeTimeOnly(char **field, int *ftype,
int nf, int *dtype,
- struct pg_tm * tm, fsec_t *fsec, int *tzp);
+ struct pg_tm *tm, fsec_t *fsec, int *tzp);
extern int DecodeInterval(char **field, int *ftype,
int nf, int *dtype,
- struct pg_tm * tm, fsec_t *fsec);
+ struct pg_tm *tm, fsec_t *fsec);
extern void DateTimeParseError(int dterr, const char *str,
const char *datatype);
-extern int DetermineLocalTimeZone(struct pg_tm * tm);
+extern int DetermineLocalTimeZone(struct pg_tm *tm);
-extern int EncodeDateOnly(struct pg_tm * tm, int style, char *str);
-extern int EncodeTimeOnly(struct pg_tm * tm, fsec_t fsec, int *tzp, int style, char *str);
-extern int EncodeDateTime(struct pg_tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str);
-extern int EncodeInterval(struct pg_tm * tm, fsec_t fsec, int style, char *str);
+extern int EncodeDateOnly(struct pg_tm *tm, int style, char *str);
+extern int EncodeTimeOnly(struct pg_tm *tm, fsec_t fsec, int *tzp, int style, char *str);
+extern int EncodeDateTime(struct pg_tm *tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str);
+extern int EncodeInterval(struct pg_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);
* Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/include/utils/nabstime.h,v 1.46 2005/06/29 22:51:57 tgl Exp $
+ * $PostgreSQL: pgsql/src/include/utils/nabstime.h,v 1.47 2005/07/22 03:46:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
/* non-fmgr-callable support routines */
extern AbsoluteTime GetCurrentAbsoluteTime(void);
-extern void abstime2tm(AbsoluteTime time, int *tzp, struct pg_tm * tm, char **tzn);
+extern void abstime2tm(AbsoluteTime time, int *tzp, struct pg_tm *tm, char **tzn);
#endif /* NABSTIME_H */
int DecodeTimeOnly(char **field, int *ftype,
int nf, int *dtype,
- struct tm * tm, fsec_t *fsec, int *tzp);
+ struct tm *tm, fsec_t *fsec, int *tzp);
int DecodeInterval(char **field, int *ftype,
int nf, int *dtype,
- struct tm * tm, fsec_t *fsec);
+ struct tm *tm, fsec_t *fsec);
-int EncodeTimeOnly(struct tm * tm, fsec_t fsec, int *tzp, int style, char *str);
-int EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str, bool);
-int EncodeInterval(struct tm * tm, fsec_t fsec, int style, char *str);
+int EncodeTimeOnly(struct tm *tm, fsec_t fsec, int *tzp, int style, char *str);
+int EncodeDateTime(struct tm *tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str, bool);
+int EncodeInterval(struct tm *tm, fsec_t fsec, int style, char *str);
int tm2timestamp(struct tm *, fsec_t, int *, timestamp *);
* Encode date as local time.
*/
int
-EncodeDateOnly(struct tm * tm, int style, char *str, bool EuroDates)
+EncodeDateOnly(struct tm *tm, int style, char *str, bool EuroDates)
{
if (tm->tm_mon < 1 || tm->tm_mon > MONTHS_PER_YEAR)
return -1;
* European - dd/mm/yyyy
*/
int
-EncodeDateTime(struct tm * tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str, bool EuroDates)
+EncodeDateTime(struct tm *tm, fsec_t fsec, int *tzp, char **tzn, int style, char *str, bool EuroDates)
{
int day,
hour,
} /* EncodeDateTime() */
void
-GetEpochTime(struct tm * tm)
+GetEpochTime(struct tm *tm)
{
struct tm *t0;
time_t epoch = 0;
} /* GetEpochTime() */
static void
-abstime2tm(AbsoluteTime _time, int *tzp, struct tm * tm, char **tzn)
+abstime2tm(AbsoluteTime _time, int *tzp, struct tm *tm, char **tzn)
{
time_t time = (time_t) _time;
struct tm *tx;
}
void
-GetCurrentDateTime(struct tm * tm)
+GetCurrentDateTime(struct tm *tm)
{
int tz;
* the *only* call of mktime() in the backend.
*/
static int
-DetermineLocalTimeZone(struct tm * tm)
+DetermineLocalTimeZone(struct tm *tm)
{
int tz;
*/
static int
DecodeNumberField(int len, char *str, int fmask,
-int *tmask, struct tm * tm, fsec_t *fsec, int *is2digits, bool EuroDates)
+int *tmask, struct tm *tm, fsec_t *fsec, int *is2digits, bool EuroDates)
{
char *cp;
*/
static int
DecodeNumber(int flen, char *str, int fmask,
-int *tmask, struct tm * tm, fsec_t *fsec, int *is2digits, bool EuroDates)
+int *tmask, struct tm *tm, fsec_t *fsec, int *is2digits, bool EuroDates)
{
int val;
char *cp;
* Insist on a complete set of fields.
*/
static int
-DecodeDate(char *str, int fmask, int *tmask, struct tm * tm, bool EuroDates)
+DecodeDate(char *str, int fmask, int *tmask, struct tm *tm, bool EuroDates)
{
fsec_t fsec;
* can be used to represent time spans.
*/
static int
-DecodeTime(char *str, int fmask, int *tmask, struct tm * tm, fsec_t *fsec)
+DecodeTime(char *str, int fmask, int *tmask, struct tm *tm, fsec_t *fsec)
{
char *cp;
*/
int
DecodeDateTime(char **field, int *ftype, int nf,
- int *dtype, struct tm * tm, fsec_t *fsec, int *tzp, bool EuroDates)
+ int *dtype, struct tm *tm, fsec_t *fsec, int *tzp, bool EuroDates)
{
int fmask = 0,
tmask,
* Returns -1 on failure (overflow).
*/
int
-tm2timestamp(struct tm * tm, fsec_t fsec, int *tzp, timestamp *result)
+tm2timestamp(struct tm *tm, fsec_t fsec, int *tzp, timestamp *result)
{
#ifdef HAVE_INT64_TIMESTAMP
int dDate;
* local time zone. If out of this range, leave as GMT. - tgl 97/05/27
*/
static int
-timestamp2tm(timestamp dt, int *tzp, struct tm * tm, fsec_t *fsec, char **tzn)
+timestamp2tm(timestamp dt, int *tzp, struct tm *tm, fsec_t *fsec, char **tzn)
{
#ifdef HAVE_INT64_TIMESTAMP
int dDate,
}
static int
-dttofmtasc_replace(timestamp *ts, date dDate, int dow, struct tm * tm,
+dttofmtasc_replace(timestamp *ts, date dDate, int dow, struct tm *tm,
char *output, int *pstr_len, char *fmtstr)
{
union un_fmt_comb replace_val;