sql >> Base de Datos >  >> RDS >> PostgreSQL

Convierta una zona horaria UTC en postgresql a EST (hora local)

Aquí en Londres, actualmente estamos 1 hora por delante de UTC. Entonces, si tomo su zona horaria sin marca de tiempo y digo que está en UTC, la imprimiré para mi zona horaria local.

richardh=> SELECT ((timestamp '2015-10-24 16:38:46') AT TIME ZONE 'UTC');
        timezone        
------------------------
 2015-10-24 17:38:46+01
(1 row)

Pero desea "EST", que parece estar en algún lugar de las Américas, a juzgar por el valor devuelto. Puede envolver la expresión en una pequeña función SQL si lo desea.

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)

Editar:cómo hacerlo en una consulta

SELECT ((stored_timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'EST') AS local_timestamp
FROM my_table;

Probablemente querrá obtener un libro de introducción a SQL si este tipo de cosas le están causando problemas.