From: | "Jonathan Brinkman" <JB(at)BlackSkyTech(dot)com> |
---|---|
To: | "'Tom Lane'" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "'Kevin Grittner'" <Kevin(dot)Grittner(at)wicourts(dot)gov> |
Cc: | <pgsql-bugs(at)postgresql(dot)org> |
Subject: | Re: TO_CHAR(timestamptz,datetimeformat) wrong after DST change |
Date: | 2011-03-21 13:24:52 |
Message-ID: | 000f01cbe7cb$5ca07cb0$15e17610$@com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
To make this even weirder, this effect only seems to happen to the
'postgres' user. When I use the 'bucardo' user, the time zone is correct!
postgres(at)Cloud-DB1:~$ psql beta_cms_main -c "select now();"
now
-------------------------------
2011-03-21 08:22:37.521213-05
(1 row)
postgres(at)Cloud-DB1:~$ psql beta_cms_main -c "SHOW TIME ZONE;"
TimeZone
----------
EST
(1 row)
postgres(at)Cloud-DB1:~$ su - bucardo
Password:
bucardo(at)Cloud-DB1:~$ psql beta_cms_main -c "SHOW TIME ZONE;"
TimeZone
------------------
America/New_York
(1 row)
bucardo(at)Cloud-DB1:~$ psql beta_cms_main -c "select now();"
now
-------------------------------
2011-03-21 09:23:03.079692-04
(1 row)
bucardo(at)Cloud-DB1:~$ logout
postgres(at)Cloud-DB1:~$ psql beta_cms_main -c "SHOW TIME ZONE;"
TimeZone
----------
EST
(1 row)
-----Original Message-----
From: Jonathan Brinkman [mailto:JB(at)BlackSkyTech(dot)com]
Sent: Monday, March 21, 2011 9:14 AM
To: 'Tom Lane'; 'Kevin Grittner'
Cc: 'pgsql-bugs(at)postgresql(dot)org'
Subject: RE: [BUGS] TO_CHAR(timestamptz,datetimeformat) wrong after DST
change
I understand now that I must use America/New_York for DST to function. I
see in select * from pg_timezone_names ; that 'EDT' is a shortcut. I tried
to SET TIME ZONE 'EDT'; but PG doesn't seem to like that.
My problem is that the corrected time zone (America/New_York) doesn't seem
to stick after updating. I update it in psql (cmd line) and within psql it
returns correctly. But when I then view now() from command line the DST
change is not there and time zone is again 'EST'. So:
postgres(at)Cloud-DB1:~$ psql beta_cms_main -c "SHOW TIME ZONE;"
TimeZone
----------
EST
(1 row)
postgres(at)Cloud-DB1:~$ psql beta_cms_main
psql (8.4.7)
Type "help" for help.
beta_cms_main=# show time zone;
TimeZone
----------
EST
(1 row)
beta_cms_main=# set time zone 'America/New_York';
SET
beta_cms_main=# show time zone;
TimeZone
------------------
America/New_York
(1 row)
beta_cms_main=# \q
postgres(at)Cloud-DB1:~$ psql beta_cms_main -c "SHOW TIME ZONE;"
TimeZone
----------
EST
(1 row)
postgres(at)Cloud-DB1:~$ psql beta_cms_main -c "select now();"
now
-------------------------------
2011-03-21 08:09:07.029884-05
(1 row)
[INCORRECT, SHOULD BE -04 and it is now 9:09AM, not 8:09AM]
I enabled America/New_York in postgresql.conf and restarted PG but no
change.
I re-ran tzdata in Ubuntu but no change.
I rebooted the server no change.
-----Original Message-----
From: Tom Lane [mailto:tgl(at)sss(dot)pgh(dot)pa(dot)us]
Sent: Friday, March 18, 2011 12:47 PM
To: Kevin Grittner
Cc: JB(at)BlackSkyTech(dot)com; pgsql-bugs(at)postgresql(dot)org
Subject: Re: [BUGS] TO_CHAR(timestamptz,datetimeformat) wrong after DST
change
"Kevin Grittner" <Kevin(dot)Grittner(at)wicourts(dot)gov> writes:
> "Jonathan Brinkman" <JB(at)BlackSkyTech(dot)com> wrote:
>> I guess EST is not DST-friendly?
> EST stands for Eastern *Standard* Time, which is explicitly *not*
> under Daylight Saving Time.
Right. SET TIMEZONE 'EST' gets you GMT-5 all year round.
For background see this bit in src/timezone/data/northamerica:
# From Arthur David Olson, 2005-12-19
# We generate the files specified below to guard against old files with
# obsolete information being left in the time zone binary directory.
# We limit the list to names that have appeared in previous versions of
# this time zone package.
# We do these as separate Zones rather than as Links to avoid problems if
# a particular place changes whether it observes DST.
# We put these specifications here in the northamerica file both to
# increase the chances that they'll actually get compiled and to
# avoid the need to duplicate the US rules in another file.
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone EST -5:00 - EST
Zone MST -7:00 - MST
Zone HST -10:00 - HST
Zone EST5EDT -5:00 US E%sT
Zone CST6CDT -6:00 US C%sT
Zone MST7MDT -7:00 US M%sT
Zone PST8PDT -8:00 US P%sT
(Note: the lack of a RULES entry means no DST rule.)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2011-03-21 15:00:39 | Re: BUG #5937: initdb: FATAL error: could not open relation with OID 2608 |
Previous Message | Jonathan Brinkman | 2011-03-21 13:13:44 | Re: TO_CHAR(timestamptz,datetimeformat) wrong after DST change |