Ir al contenido principal
Documentos
Funciones de cadenaDesencadenaBases de datosFunciones JSONFunciones matemáticasFunciones de fechaÍndicesSintaxis básicaGestión de Tablas y Esquemas

Conversiones de zona horaria PostgreSQL

Las Funciones de Fecha de PostgreSQL se utilizan para manipular y recuperar valores de fecha y hora, incluyendo la conversión entre zonas horarias. Estas funciones son esenciales para las aplicaciones que requieren un manejo coherente de la fecha y la hora en distintas regiones geográficas.

Utilización

Las Funciones de Fecha en PostgreSQL se utilizan para realizar operaciones con valores de fecha y hora, como convertir marcas de tiempo de una zona horaria a otra para obtener representaciones horarias precisas. La sintaxis para convertir husos horarios suele incluir la construcción AT TIME ZONE.

timestamp AT TIME ZONE timezone;

En esta sintaxis, un timestamp se convierte en el timezone especificado, lo que permite ajustar los datos fecha-hora para reflejar diferentes configuraciones regionales.

Ejemplos

1. Conversión básica de husos horarios

SELECT '2023-10-01 14:00:00'::timestamp AT TIME ZONE 'UTC';

Este ejemplo convierte la marca de tiempo dada de UTC a la zona horaria local del servidor. Ten en cuenta que la configuración de la zona horaria actual del servidor afecta al resultado, por lo que es necesario conocer esta configuración para entender la salida.

2. Convertir la hora con un huso horario específico

SELECT '2023-10-01 14:00:00'::timestamp AT TIME ZONE 'America/New_York';

Aquí, la marca de tiempo se convierte a la zona horaria del Este (America/New_York). La marca horaria resultante se ajustará para reflejar esta zona horaria específica.

3. Conversión y visualización de los ajustes del huso horario

SELECT '2023-10-01 14:00:00'::timestamp AT TIME ZONE 'UTC' AT TIME ZONE 'Asia/Tokyo';

Este ejemplo convierte primero una marca de tiempo UTC a la hora local del servidor y después a la zona horaria Asia/Tokyo. Esto muestra cómo una marca de tiempo puede desplazarse a través de varias zonas horarias.

4. Manejar los cambios de horario de verano

SELECT '2023-03-12 01:30:00'::timestamptz AT TIME ZONE 'America/New_York';

Este ejemplo demuestra cómo PostgreSQL se ajusta automáticamente a los cambios de horario de verano, lo que es crucial cuando se necesita una representación exacta de la hora durante esas transiciones.

Consejos y buenas prácticas

  • Utiliza tipos de datos que tengan en cuenta la zona horaria. Prefiere utilizar timestamptz a timestamp para almacenar la información de la zona horaria. El tipo timestamptz gestiona automáticamente las conversiones de zona horaria y los cambios de horario de verano, mientras que timestamp no conserva la información de la zona horaria.
  • Sé explícito con las zonas horarias. Especifica siempre la zona horaria al convertir las horas para evitar ambigüedades.
  • Ten en cuenta el horario de verano. Ten en cuenta los cambios de horario de verano cuando trabajes con husos horarios, para garantizar cálculos de tiempo precisos.
  • Aprovecha la base de datos de zonas horarias de PostgreSQL. Utiliza el completo soporte de zonas horarias de PostgreSQL para realizar conversiones precisas.
  • Prueba con valores conocidos. Valida las conversiones utilizando diferencias horarias conocidas para garantizar la precisión.