|
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 | staticint |
1356 | 1354 | timetz2tm(TimeTzADT*time,structtm*tm,fsec_t*fsec,int*tzp) |
1357 | 1355 | { |
1358 | 1356 | #ifdefHAVE_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 | +int64trem=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 | | -doubletrem; |
| 1366 | +doubletrem=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); |
|