with - timestamp postgresql example
Desfase de zona horaria local en PostgreSQL (2)
Mi aplicación web almacena todas las marcas de tiempo en UTC sin zonas horarias. Tengo un script shell / psql que devuelve una lista de inicios de sesión recientes, y quiero que ese script muestre los tiempos de inicio de sesión en la zona horaria local del servidor (que puede variar dependiendo de dónde se encuentre el servidor y con el horario de verano).
Para obtener un intervalo que representa la diferencia entre la zona horaria de mi servidor de base de datos y UTC, actualmente estoy usando este truco:
SELECT age(now() at time zone ''UTC'', now());
Eso funciona, pero ¿hay una manera más directa?
Hay un parámetro de configuración del servidor llamado "zona horaria" que devuelve una cadena de zona horaria válida, pero no creo que sea posible acceder a esos parámetros en una consulta. (Supongo que es una pregunta aparte, pero una respuesta resolvería el problema de la zona horaria).
Para obtener la diferencia de # de segundos como un entero, lo he usado simplemente:
select extract( timezone from now() );
SELECT current_setting(''TIMEZONE'')
Esto se puede usar en una consulta, sin embargo, esto no da una diferencia numérica.
Tu solución está bien.