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

PostgreSQL TIMESTAMPTZ

PostgreSQL `TIMESTAMPTZ` es un tipo de datos que almacena tanto la fecha como la hora con la información del huso horario. Es esencial para las aplicaciones que requieren un cronometraje preciso en distintas zonas horarias.

Utilización

El tipo `TIMESTAMPTZ` se utiliza para almacenar datos de fecha y hora que tienen en cuenta las diferencias de zona horaria, garantizando la coherencia en aplicaciones sensibles al tiempo. A menudo se utiliza en escenarios que implican transacciones globales de datos y eventos de registro. Internamente, `TIMESTAMPTZ` almacena todas las marcas de tiempo en UTC y las convierte según la configuración de la zona horaria del cliente al recuperarlas, garantizando la coherencia entre distintas regiones.

sql
CREATE TABLE event_logs (
    event_id SERIAL PRIMARY KEY,
    event_name VARCHAR(255),
    event_timestamp TIMESTAMPTZ
);

En esta sintaxis, `event_timestamp TIMESTAMPTZ` almacena la hora exacta del evento, incluida la zona horaria.

Ejemplos

1. Inserción básica TIMESTAMPTZ

sql
INSERT INTO event_logs (event_name, event_timestamp)
VALUES ('System Update', '2023-10-25 14:30:00+00');

Este ejemplo inserta un evento con una marca de tiempo específica en UTC, incluyendo la información de la zona horaria UTC.

2. Recuperar el TIMESTAMPTZ actual

sql
SELECT NOW()::TIMESTAMPTZ AS current_time;

Aquí, la función `NOW()` obtiene la fecha y hora actuales, ajustadas automáticamente a la zona horaria del servidor, y las convierte en `TIMESTAMPTZ`.

3. Convertir TIMESTAMPTZ a otro huso horario

sql
SELECT event_name, 
       event_timestamp AT TIME ZONE 'America/New_York' AS event_time_est
FROM event_logs;

Este ejemplo convierte la `TIMESTAMPTZ` almacenada a Hora Estándar del Este (EST) a efectos de visualización, y no altera la marca de tiempo almacenada.

Consejos y buenas prácticas

  • Utiliza TIMESTAMPTZ para aplicaciones globales. Garantiza la coherencia horaria en las distintas regiones.
  • Ten en cuenta las conversiones de zona horaria. Especifica siempre la zona horaria al convertir o comparar marcas de tiempo.
  • Aprovecha las funciones integradas. Utiliza las funciones de PostgreSQL como `NOW()` o `CURRENT_TIMESTAMP` para obtener marcas de tiempo dinámicas.
  • Ten en cuenta la eficiencia del almacenamiento. Aunque `TIMESTAMPTZ` es potente, asegúrate de su necesidad, ya que puede consumir más almacenamiento que `TIMESTAMP` sin zona horaria. Considera la posibilidad de utilizar `TIMESTAMP` sin zona horaria para aplicaciones localizadas en las que las zonas horarias no sean un problema.
  • Establece correctamente el parámetro de configuración `timezone` del servidor PostgreSQL. Esto garantiza el comportamiento esperado de las conversiones de zonas horarias y la recuperación precisa de la hora.
  • Ten en cuenta los cambios de horario de verano (DST). `TIMESTAMPTZ` se ajusta automáticamente al horario de verano, lo que es crucial para las aplicaciones sensibles a los cambios de hora. Asegúrate de que la configuración de la zona horaria de tu servidor gestiona adecuadamente el horario de verano.