On 13-10-2011 10:47, Pedro Ivo Bispo França wrote:
> O problema é que se eu altero o timezone da base, TODAS as datas da base,
> mesmo as anteriores ao horário de verão, vão ser alteradas no output. Como
> evitar isso? Talvez o a coluna "is_dst" em pg_timezone_names ajude em algo?
> Não entendi direito como ela funciona...
 >
Isso porque você *não* armazena o timezone no campo data/hora (aka timestamp 
without time zone). Quando estamos trabalhando com data/hora temos que fazer a 
seguinte pergunta: a zona horária de armazenamento é a mesma que a de 
apresentação? Se sim, podemos utilizar o tipo de dado 'timestamp without time 
zone'; senão, o tipo de dado deve ser 'timestamp with time zone'.

A coluna is_dst indica se a zona horária possui horário de verão ou não (aka 
daylight saving time).

Aplicações que funcionam em múltiplas zonas horárias geralmente escolhem uma 
zona horária padrão (por exemplo, horário de Brasília), utilizam o tipo de 
dado 'timestamp with time zone' e ao manipular os campos data/hora sempre 
utilizam "AT TIMEZONE 'foo'" [1] de acordo com cada caso.

[1] 
http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT


-- 
    Euler Taveira de Oliveira - Timbira       http://www.timbira.com.br/
    PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a