summaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
authorTom Lane2003-07-17 00:55:37 +0000
committerTom Lane2003-07-17 00:55:37 +0000
commit764f72dc823edb3f8bdf387501ce4c12dedd2369 (patch)
tree01838a17f094eb1ac2a0f99102002adbff063605 /src/backend/utils
parent93236b58e088cd2151540528d484da9ad82e48c8 (diff)
Make EXTRACT(TIMEZONE) and SET/SHOW TIMEZONE follow the SQL convention
for the sign of timezone offsets, ie, positive is east from UTC. These were previously out of step with other operations that accept or show timezones, such as I/O of timestamptz values.
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/adt/date.c13
-rw-r--r--src/backend/utils/adt/nabstime.c16
-rw-r--r--src/backend/utils/adt/timestamp.c13
3 files changed, 23 insertions, 19 deletions
diff --git a/src/backend/utils/adt/date.c b/src/backend/utils/adt/date.c
index fa03b577891..ea1768be79d 100644
--- a/src/backend/utils/adt/date.c
+++ b/src/backend/utils/adt/date.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.83 2003/06/16 18:56:45 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/date.c,v 1.84 2003/07/17 00:55:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2031,17 +2031,18 @@ timetz_part(PG_FUNCTION_ARGS)
switch (val)
{
case DTK_TZ:
- result = tz;
+ result = -tz;
break;
case DTK_TZ_MINUTE:
- result = tz / 60;
- TMODULO(result, dummy, 60e0);
+ result = -tz;
+ result /= 60;
+ FMODULO(result, dummy, 60e0);
break;
case DTK_TZ_HOUR:
- dummy = tz;
- TMODULO(dummy, result, 3600e0);
+ dummy = -tz;
+ FMODULO(dummy, result, 3600e0);
break;
case DTK_MICROSEC:
diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c
index fe14c9bec4f..88943a76676 100644
--- a/src/backend/utils/adt/nabstime.c
+++ b/src/backend/utils/adt/nabstime.c
@@ -10,7 +10,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.108 2003/05/12 23:08:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.109 2003/07/17 00:55:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -825,12 +825,14 @@ reltimesend(PG_FUNCTION_ARGS)
static void
reltime2tm(RelativeTime time, struct tm * tm)
{
- TMODULO(time, tm->tm_year, 31557600);
- TMODULO(time, tm->tm_mon, 2592000);
- TMODULO(time, tm->tm_mday, 86400);
- TMODULO(time, tm->tm_hour, 3600);
- TMODULO(time, tm->tm_min, 60);
- TMODULO(time, tm->tm_sec, 1);
+ double dtime = time;
+
+ FMODULO(dtime, tm->tm_year, 31557600);
+ FMODULO(dtime, tm->tm_mon, 2592000);
+ FMODULO(dtime, tm->tm_mday, 86400);
+ FMODULO(dtime, tm->tm_hour, 3600);
+ FMODULO(dtime, tm->tm_min, 60);
+ FMODULO(dtime, tm->tm_sec, 1);
}
diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c
index 6cf4f3667cf..4ee6e953240 100644
--- a/src/backend/utils/adt/timestamp.c
+++ b/src/backend/utils/adt/timestamp.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.85 2003/07/04 18:21:13 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/timestamp.c,v 1.86 2003/07/17 00:55:37 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3080,17 +3080,18 @@ timestamptz_part(PG_FUNCTION_ARGS)
switch (val)
{
case DTK_TZ:
- result = tz;
+ result = -tz;
break;
case DTK_TZ_MINUTE:
- result = tz / 60;
- TMODULO(result, dummy, 60e0);
+ result = -tz;
+ result /= 60;
+ FMODULO(result, dummy, 60e0);
break;
case DTK_TZ_HOUR:
- dummy = tz;
- TMODULO(dummy, result, 3600e0);
+ dummy = -tz;
+ FMODULO(dummy, result, 3600e0);
break;
case DTK_MICROSEC: