1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-10 17:42:29 +03:00

More macro cleanups for date/time.

This commit is contained in:
Bruce Momjian
2005-05-23 21:54:02 +00:00
parent 5ebaae801c
commit 4550c1e519
11 changed files with 98 additions and 88 deletions

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.106 2005/05/23 18:56:55 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/date.c,v 1.107 2005/05/23 21:54:01 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1339,8 +1339,8 @@ timestamp_time(PG_FUNCTION_ARGS)
#ifdef HAVE_INT64_TIMESTAMP
/*
* Could also do this with time = (timestamp / 86400000000 *
* 86400000000) - timestamp;
* Could also do this with time = (timestamp / USECS_PER_DAY *
* USECS_PER_DAY) - timestamp;
*/
result = ((((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec)
* USECS_PER_SEC) + fsec);
@@ -1376,8 +1376,8 @@ timestamptz_time(PG_FUNCTION_ARGS)
#ifdef HAVE_INT64_TIMESTAMP
/*
* Could also do this with time = (timestamp / 86400000000 *
* 86400000000) - timestamp;
* Could also do this with time = (timestamp / USECS_PER_DAY *
* USECS_PER_DAY) - timestamp;
*/
result = ((((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec)
* USECS_PER_SEC) + fsec);
@@ -1498,7 +1498,7 @@ time_pl_interval(PG_FUNCTION_ARGS)
result = (time + span->time);
TMODULO(result, time1, (double)SECS_PER_DAY);
if (result < 0)
result += 86400;
result += SECS_PER_DAY;
#endif
PG_RETURN_TIMEADT(result);
@@ -1525,7 +1525,7 @@ time_mi_interval(PG_FUNCTION_ARGS)
result = (time - span->time);
TMODULO(result, time1, (double)SECS_PER_DAY);
if (result < 0)
result += 86400;
result += SECS_PER_DAY;
#endif
PG_RETURN_TIMEADT(result);
@@ -2033,7 +2033,7 @@ timetz_pl_interval(PG_FUNCTION_ARGS)
result->time = (time->time + span->time);
TMODULO(result->time, time1.time, (double)SECS_PER_DAY);
if (result->time < 0)
result->time += 86400;
result->time += SECS_PER_DAY;
#endif
result->zone = time->zone;
@@ -2066,7 +2066,7 @@ timetz_mi_interval(PG_FUNCTION_ARGS)
result->time = (time->time - span->time);
TMODULO(result->time, time1.time, (double)SECS_PER_DAY);
if (result->time < 0)
result->time += 86400;
result->time += SECS_PER_DAY;
#endif
result->zone = time->zone;
@@ -2504,9 +2504,9 @@ timetz_zone(PG_FUNCTION_ARGS)
#else
result->time = time->time + (time->zone - tz);
while (result->time < 0)
result->time += 86400;
while (result->time >= 86400)
result->time -= 86400;
result->time += SECS_PER_DAY;
while (result->time >= SECS_PER_DAY)
result->time -= SECS_PER_DAY;
#endif
result->zone = tz;
@@ -2558,9 +2558,9 @@ timetz_izone(PG_FUNCTION_ARGS)
#else
result->time = time->time + (time->zone - tz);
while (result->time < 0)
result->time += 86400;
while (result->time >= 86400)
result->time -= 86400;
result->time += SECS_PER_DAY;
while (result->time >= SECS_PER_DAY)
result->time -= SECS_PER_DAY;
#endif
result->zone = tz;

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.142 2005/05/23 18:56:55 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/datetime.c,v 1.143 2005/05/23 21:54:01 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1214,7 +1214,7 @@ DecodeDateTime(char **field, int *ftype, int nf,
&tm->tm_hour, &tm->tm_min,
&tm->tm_sec, fsec);
#else
dt2time(time * 86400, &tm->tm_hour,
dt2time(time * SECS_PER_DAY, &tm->tm_hour,
&tm->tm_min, &tm->tm_sec, fsec);
#endif
}
@@ -1611,8 +1611,8 @@ DetermineLocalTimeZone(struct pg_tm * tm)
goto overflow;
date = date2j(tm->tm_year, tm->tm_mon, tm->tm_mday) - UNIX_EPOCH_JDATE;
day = ((pg_time_t) date) *86400;
if (day / 86400 != date)
day = ((pg_time_t) date) *SECS_PER_DAY;
if (day / SECS_PER_DAY != date)
goto overflow;
sec = tm->tm_sec + (tm->tm_min + tm->tm_hour * 60) * 60;
mytime = day + sec;
@@ -1972,7 +1972,7 @@ DecodeTimeOnly(char **field, int *ftype, int nf,
dt2time(time * USECS_PER_DAY,
&tm->tm_hour, &tm->tm_min, &tm->tm_sec, fsec);
#else
dt2time(time * 86400,
dt2time(time * SECS_PER_DAY,
&tm->tm_hour, &tm->tm_min, &tm->tm_sec, fsec);
#endif
}
@@ -3099,7 +3099,7 @@ DecodeInterval(char **field, int *ftype, int nf, int *dtype, struct pg_tm * tm,
{
int sec;
fval *= 86400;
fval *= SECS_PER_DAY;
sec = fval;
tm->tm_sec += sec;
#ifdef HAVE_INT64_TIMESTAMP
@@ -3117,7 +3117,7 @@ DecodeInterval(char **field, int *ftype, int nf, int *dtype, struct pg_tm * tm,
{
int sec;
fval *= (7 * 86400);
fval *= (7 * SECS_PER_DAY);
sec = fval;
tm->tm_sec += sec;
#ifdef HAVE_INT64_TIMESTAMP
@@ -3135,7 +3135,7 @@ DecodeInterval(char **field, int *ftype, int nf, int *dtype, struct pg_tm * tm,
{
int sec;
fval *= (30 * 86400);
fval *= (30 * SECS_PER_DAY);
sec = fval;
tm->tm_sec += sec;
#ifdef HAVE_INT64_TIMESTAMP

View File

@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.129 2005/05/23 18:56:55 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/nabstime.c,v 1.130 2005/05/23 21:54:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -129,10 +129,10 @@ AbsoluteTimeUsecToTimestampTz(AbsoluteTime sec, int usec)
TimestampTz result;
#ifdef HAVE_INT64_TIMESTAMP
result = ((sec - ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * 86400))
result = ((sec - ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY))
* USECS_PER_SEC) + usec;
#else
result = sec - ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * 86400)
result = sec - ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY)
+ (usec / 1000000.0);
#endif
@@ -730,7 +730,7 @@ reltimein(PG_FUNCTION_ARGS)
{
case DTK_DELTA:
result = ((((tm->tm_hour * 60) + tm->tm_min) * 60) + tm->tm_sec);
result += ((tm->tm_year * 36525 * 864) + (((tm->tm_mon * 30) + tm->tm_mday) * 86400));
result += ((tm->tm_year * 36525 * 864) + (((tm->tm_mon * 30) + tm->tm_mday) * SECS_PER_DAY));
break;
default:
@@ -795,7 +795,7 @@ reltime2tm(RelativeTime time, struct pg_tm * tm)
FMODULO(dtime, tm->tm_year, 31557600);
FMODULO(dtime, tm->tm_mon, 2592000);
FMODULO(dtime, tm->tm_mday, 86400);
FMODULO(dtime, tm->tm_mday, SECS_PER_DAY);
FMODULO(dtime, tm->tm_hour, 3600);
FMODULO(dtime, tm->tm_min, 60);
FMODULO(dtime, tm->tm_sec, 1);
@@ -947,10 +947,10 @@ interval_reltime(PG_FUNCTION_ARGS)
#ifdef HAVE_INT64_TIMESTAMP
span = ((((INT64CONST(365250000) * year) + (INT64CONST(30000000) * month))
* INT64CONST(86400)) + interval->time);
* INT64CONST(SECS_PER_DAY)) + interval->time);
span /= USECS_PER_SEC;
#else
span = (((((double) 365.25 * year) + ((double) 30 * month)) * 86400) + interval->time);
span = (((((double) 365.25 * year) + ((double) 30 * month)) * SECS_PER_DAY) + interval->time);
#endif
if ((span < INT_MIN) || (span > INT_MAX))
@@ -986,13 +986,13 @@ reltime_interval(PG_FUNCTION_ARGS)
#ifdef HAVE_INT64_TIMESTAMP
year = (reltime / (36525 * 864));
reltime -= (year * (36525 * 864));
month = (reltime / (30 * 86400));
reltime -= (month * (30 * 86400));
month = (reltime / (30 * SECS_PER_DAY));
reltime -= (month * (30 * SECS_PER_DAY));
result->time = (reltime * USECS_PER_SEC);
#else
TMODULO(reltime, year, (36525 * 864));
TMODULO(reltime, month, (30 * 86400));
TMODULO(reltime, month, (30 * SECS_PER_DAY));
result->time = reltime;
#endif

View File

@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.121 2005/05/23 18:56:55 momjian Exp $
* $PostgreSQL: pgsql/src/backend/utils/adt/timestamp.c,v 1.122 2005/05/23 21:54:02 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -699,7 +699,7 @@ AdjustIntervalForTypmod(Interval *interval, int32 typmod)
USECS_PER_DAY;
#else
interval->time = ((int) (interval->time / 86400)) * 86400;
interval->time = ((int) (interval->time / SECS_PER_DAY)) * SECS_PER_DAY;
#endif
}
else if (range == INTERVAL_MASK(HOUR))
@@ -1021,7 +1021,7 @@ timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, char **tzn
if (time < 0)
{
time += 86400;
time += SECS_PER_DAY;
date -=1;
}
#endif
@@ -1074,10 +1074,10 @@ timestamp2tm(Timestamp dt, int *tzp, struct pg_tm * tm, fsec_t *fsec, char **tzn
*/
#ifdef HAVE_INT64_TIMESTAMP
dt = (dt - *fsec) / USECS_PER_SEC +
(POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * 86400;
(POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY;
#else
dt = rint(dt - *fsec +
(POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * 86400);
(POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY);
#endif
utime = (pg_time_t) dt;
if ((Timestamp) utime == dt)
@@ -1151,7 +1151,7 @@ tm2timestamp(struct pg_tm * tm, fsec_t fsec, int *tzp, Timestamp *result)
(*result >= 0 && date < 0))
return -1;
#else
*result = date * 86400 + time;
*result = date * SECS_PER_DAY + time;
#endif
if (tzp != NULL)
*result = dt2local(*result, -(*tzp));
@@ -1621,9 +1621,9 @@ interval_cmp_internal(Interval *interval1, Interval *interval2)
span2 += interval2->month * INT64CONST(30) * USECS_PER_DAY;
#else
if (interval1->month != 0)
span1 += interval1->month * (30.0 * 86400);
span1 += interval1->month * (30.0 * SECS_PER_DAY);
if (interval2->month != 0)
span2 += interval2->month * (30.0 * 86400);
span2 += interval2->month * (30.0 * SECS_PER_DAY);
#endif
return ((span1 < span2) ? -1 : (span1 > span2) ? 1 : 0);
@@ -2166,7 +2166,7 @@ interval_mul(PG_FUNCTION_ARGS)
result->month = rint(months);
result->time = JROUND(span1->time * factor);
/* evaluate fractional months as 30 days */
result->time += JROUND((months - result->month) * 30 * 86400);
result->time += JROUND((months - result->month) * 30 * SECS_PER_DAY);
#endif
PG_RETURN_INTERVAL_P(result);
@@ -2211,7 +2211,7 @@ interval_div(PG_FUNCTION_ARGS)
result->month = rint(months);
result->time = JROUND(span->time / factor);
/* evaluate fractional months as 30 days */
result->time += JROUND((months - result->month) * 30 * 86400);
result->time += JROUND((months - result->month) * 30 * SECS_PER_DAY);
#endif
PG_RETURN_INTERVAL_P(result);
@@ -3788,8 +3788,8 @@ interval_part(PG_FUNCTION_ARGS)
#endif
if (interval->month != 0)
{
result += (365.25 * 86400) * (interval->month / 12);
result += (30.0 * 86400) * (interval->month % 12);
result += (365.25 * SECS_PER_DAY) * (interval->month / 12);
result += (30.0 * SECS_PER_DAY) * (interval->month % 12);
}
}
else