Normalmente, se uma cadeia de caracteres de data e hora for sintaticamente válida, mas contiver valores de campo fora do intervalo permitido, um erro é lançado. Por exemplo, uma entrada especificando 31 de fevereiro é rejeitada.
Durante uma transição para o horário de verão, é possível que uma
sequência de carimbo de data e hora aparentemente válida represente
um carimbo de data e hora inexistente ou ambíguo.
Estes casos não são rejeitados; a ambiguidade é resolvida
determinando qual compensação de UTC aplicar.
Por exemplo, supondo que o parâmetro TimeZone
esteja definido como America/New_York, considere
SET timezone = 'America/New_York'; SELECT '2018-03-11 02:30'::timestamptz;
timestamptz
------------------------
2018-03-11 03:30:00-04
(1 linha)
Como aquele dia estava numa data de transição a frente naquela zona horária, não havia nenhum instante de tempo civil 2h30; os relógios avançaram de 2AM EST para 3AM EDT. O PostgreSQL interpreta a hora fornecida como sendo a hora padrão (UTC-5), que então apresenta como 3:30 AM EDT (UTC-4).
Inversamente, considere o comportamento durante uma transição de volta para a hora padrão:
SELECT '2018-11-04 01:30'::timestamptz;
timestamptz
------------------------
2018-11-04 01:30:00-05
(1 linha)
Naquela data, havia duas interpretações possíveis para 1h30; era 1h30 EDT e, uma hora depois, após os relógios voltarem das 2h EDT para 1h EST, havia 1h30 EST. Novamente, o PostgreSQL interpreta a hora fornecida como sendo a hora padrão (UTC-5). Pode-se forçar a outra interpretação especificando o horário de verão:
SELECT '2018-11-04 01:30 EDT'::timestamptz;
timestamptz
------------------------
2018-11-04 01:30:00-04
(1 linha)
A regra aplicada nesses casos é que um carimbo de data e hora inválido, parecendo estar em uma transição de horário de verão, é atribuído ao deslocamento UTC que prevaleceu na zona horária imediatamente antes da transição, enquanto um carimbo de data e hora ambíguo, que poderia cair em qualquer lado de uma transição de salto para trás, é atribuído ao deslocamento UTC que prevaleceu logo após a transição. Na maioria das zonas horárias, isto equivale a dizer que “a interpretação do horário padrão é preferível em caso de dúvida”.
Em todos os casos, o deslocamento UTC associado a um registro de data e hora pode ser especificado explicitamente, usando o deslocamento UTC numérico, ou uma abreviatura de zona horária que corresponda a um deslocamento UTC fixo. A regra fornecida se aplica somente quando é necessário inferir um deslocamento UTC para uma zona horária na qual o deslocamento varia.