diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-07-17 00:55:37 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-07-17 00:55:37 +0000 |
commit | 764f72dc823edb3f8bdf387501ce4c12dedd2369 (patch) | |
tree | 01838a17f094eb1ac2a0f99102002adbff063605 /src/backend/commands/variable.c | |
parent | 93236b58e088cd2151540528d484da9ad82e48c8 (diff) | |
download | postgresql-764f72dc823edb3f8bdf387501ce4c12dedd2369.tar.gz postgresql-764f72dc823edb3f8bdf387501ce4c12dedd2369.zip |
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/commands/variable.c')
-rw-r--r-- | src/backend/commands/variable.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index 41bc3f58bc2..9a525b14b89 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.81 2003/07/15 19:34:43 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.82 2003/07/17 00:55:37 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -429,7 +429,8 @@ assign_timezone(const char *value, bool doit, bool interactive) } if (doit) { - CTimeZone = interval->time; + /* Here we change from SQL to Unix sign convention */ + CTimeZone = - interval->time; HasCTZSet = true; } pfree(interval); @@ -444,7 +445,8 @@ assign_timezone(const char *value, bool doit, bool interactive) { if (doit) { - CTimeZone = hours * 3600; + /* Here we change from SQL to Unix sign convention */ + CTimeZone = - hours * 3600; HasCTZSet = true; } } @@ -557,7 +559,8 @@ assign_timezone(const char *value, bool doit, bool interactive) return NULL; if (HasCTZSet) - snprintf(result, sizeof(tzbuf), "%.5f", (double) CTimeZone / 3600.0); + snprintf(result, sizeof(tzbuf), "%.5f", + (double) (-CTimeZone) / 3600.0); else if (tzbuf[0] == 'T') strcpy(result, tzbuf + 3); else @@ -579,7 +582,7 @@ show_timezone(void) Interval interval; interval.month = 0; - interval.time = CTimeZone; + interval.time = - CTimeZone; tzn = DatumGetCString(DirectFunctionCall1(interval_out, IntervalPGetDatum(&interval))); |