|
8 | 8 | *
|
9 | 9 | *
|
10 | 10 | * IDENTIFICATION
|
11 |
| - * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.78 2003/01/31 01:08:08 tgl Exp $ |
| 11 | + * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.79 2003/02/13 17:04:19 tgl Exp $ |
12 | 12 | *
|
13 | 13 | *-------------------------------------------------------------------------
|
14 | 14 | */
|
@@ -1349,23 +1349,22 @@ timetz_out(PG_FUNCTION_ARGS)
|
1349 | 1349 |
|
1350 | 1350 | /* timetz2tm()
|
1351 | 1351 | * Convert TIME WITH TIME ZONE data type to POSIX time structure.
|
1352 |
| - * For dates within the system-supported time_t range, convert to the |
1353 |
| - * local time zone. If out of this range, leave as GMT. - tgl 97/05/27 |
1354 | 1352 | */
|
1355 | 1353 | static int
|
1356 | 1354 | timetz2tm(TimeTzADT *time, struct tm * tm, fsec_t *fsec, int *tzp)
|
1357 | 1355 | {
|
1358 | 1356 | #ifdef HAVE_INT64_TIMESTAMP
|
1359 |
| - tm->tm_hour = (time->time / INT64CONST(3600000000)); |
1360 |
| - time->time -= (tm->tm_hour * INT64CONST(3600000000)); |
1361 |
| - tm->tm_min = (time->time / INT64CONST(60000000)); |
1362 |
| - time->time -= (tm->tm_min * INT64CONST(60000000)); |
1363 |
| - tm->tm_sec = (time->time / INT64CONST(1000000)); |
1364 |
| - *fsec = (time->time - (tm->tm_sec * INT64CONST(1000000))); |
| 1357 | + int64 trem = time->time; |
| 1358 | + |
| 1359 | + tm->tm_hour = (trem / INT64CONST(3600000000)); |
| 1360 | + trem -= (tm->tm_hour * INT64CONST(3600000000)); |
| 1361 | + tm->tm_min = (trem / INT64CONST(60000000)); |
| 1362 | + trem -= (tm->tm_min * INT64CONST(60000000)); |
| 1363 | + tm->tm_sec = (trem / INT64CONST(1000000)); |
| 1364 | + *fsec = (trem - (tm->tm_sec * INT64CONST(1000000))); |
1365 | 1365 | #else
|
1366 |
| - double trem; |
| 1366 | + double trem = time->time; |
1367 | 1367 |
|
1368 |
| - trem = time->time; |
1369 | 1368 | TMODULO(trem, tm->tm_hour, 3600e0);
|
1370 | 1369 | TMODULO(trem, tm->tm_min, 60e0);
|
1371 | 1370 | TMODULO(trem, tm->tm_sec, 1e0);
|
|
0 commit comments