PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Converter um fuso horário UTC no postgresql para EST (hora local)


Aqui em Londres, estamos 1 hora à frente do UTC. Então - se eu pegar seu fuso horário sem carimbo de data e hora e disser que está em UTC, vou imprimi-lo para o meu fuso horário local.
richardh=> SELECT ((timestamp '2015-10-24 16:38:46') AT TIME ZONE 'UTC');
        timezone        
------------------------
 2015-10-24 17:38:46+01
(1 row)

Mas você quer "EST" que parece estar em algum lugar das Américas, a julgar pelo valor retornado. Você pode envolver a expressão em uma pequena função SQL, se quiser.
richardh=> SELECT ((timestamp '2015-10-24 16:38:46') AT TIME ZONE 'UTC') AT TIME ZONE 'EST';
      timezone       
---------------------
 2015-10-24 11:38:46
(1 row)

Edit:como fazer isso em uma consulta
SELECT ((stored_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'EST') AS local_timestamp
FROM my_table;

Você provavelmente desejará obter um livro introdutório sobre SQL se esse tipo de coisa estiver causando problemas.