On Mon, May 20, 2019 at 01:13:50PM -0500, Jeremy Finzel wrote:
> I have a question about this (really exciting) feature coming in pg12:
> 
> Allow ALTER TABLE .. SET DATA TYPE timestamp/timestamptz to avoid a table
> rewrite when the session time zone is UTC (Noah Misch)
> 
> In the UTC time zone, the data types are binary compatible.
> 
> We actually want to migrate all of our databases to timestamptz everywhere. 
> But some of them have historically saved data in a *local* time zone with data
> type timestamp.
> 
> I assume there is no similarly easy way to do this alter type without a table
> rewrite for a local time zone?  I would assume DST changes would be an issue
> here.
> 
> But it would be really nice if we have a table with timestamp data saved @
> America/Chicago time zone, to set the session to 'America/Chicago' and alter
> type to timestamptz, and similarly avoid a table rewrite.  Is this possible or
> feasible?

Well, the timestamptz data type stores the date/time in UTC internally,
and then shifts it to whatever timezone you have set in the client.  If
you did the conversion from timestamp _without_ time zone columns, the
new data would take your local time and assume it was stored in UTC,
which I don't think you want.  I don't know of a way to make the
adjustment you want without a table rewrite.  It is unfortunate that the
SQL standard requires timestamp _without_ time zone to be the default
for 'timestamp'.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +


Reply via email to