Re: timezone() with timeofday() converts the wrong direction? - Mailing list pgsql-general

From Michael Fuhr
Subject Re: timezone() with timeofday() converts the wrong direction?
Date
Msg-id 20050421233216.GA43855@winnie.fuhr.org
Whole thread Raw
In response to Re: timezone() with timeofday() converts the wrong direction?  ("Steve - DND" <postgres@digitalnothing.com>)
Responses Re: timezone() with timeofday() converts the wrong direction?  ("Steve - DND" <postgres@digitalnothing.com>)
List pgsql-general
On Thu, Apr 21, 2005 at 04:11:57PM -0700, Steve - DND wrote:
> >
> > Perhaps this is what you want:
> >
> >   SELECT timezone('UTC', timeofday()::timestamptz);
>
> That did it. Strangely, I thought I had tried that already, but I must not
> have. My next question would be if I did:
>
>     SELECT timezone('UTC', timeofday()::timestamptz):timestamptz;
>
> Why do I get the timezone value as being -07(my local offset), instead
> of -00?

Again looking at the documentation, we see that "timestamp with
time zone AT TIME ZONE zone" means "Convert UTC to local time in
given time zone" and has a return type of "timestamp without time
zone".  So if we run the above command without the final cast
around 16:25 PDT / 23:25 UTC, we get this:

SELECT timezone('UTC', timeofday()::timestamptz);
          timezone
----------------------------
 2005-04-21 23:25:12.868212
(1 row)

This result is a "timestamp without time zone", so there's no
indication that it's UTC or PDT or anything else.  Since it has no
time zone, casting it to timestamptz puts it in your local time
zone:

SELECT '2005-04-21 23:25:12.868212'::timestamptz;
          timestamptz
-------------------------------
 2005-04-21 23:25:12.868212-07
(1 row)

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/

pgsql-general by date:

Previous
From: Thomas Hallgren
Date:
Subject: Returning a RECORD, not SETOF RECORD
Next
From: "Mark Miller"
Date:
Subject: Install development headers/libraries Win32 v 8.0.2