Configurar la zona horaria de la sesión
Las funciones de conversión de MySQL dependen de la zona horaria de la sesión. En este ejemplo, la sesión utiliza UTC.
SET time_zone = '+00:00';
SELECT FROM_UNIXTIME(1711972800);
-- 2024-04-01 12:00:00
SELECT UNIX_TIMESTAMP('2024-04-01 12:00:00');
-- 1711972800¿TIMESTAMP o DATETIME?
MySQL convierte los valores TIMESTAMP entre la zona horaria de la sesión y UTC al almacenarlos y leerlos. DATETIME almacena campos de calendario sin esta conversión automática. Ninguno de los dos tipos guarda por sí solo un nombre de zona horaria como Europe/Paris.
CREATE TABLE events (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
occurred_at TIMESTAMP(6) NOT NULL
);
INSERT INTO events (occurred_at)
VALUES ('2024-04-01 12:00:00.123456');Comprobar el rango y la precisión
En MySQL 8.4, TIMESTAMP sigue limitado al rango comprendido entre 1970 y enero de 2038. DATETIME tiene un rango distinto. Consulta la documentación de tu versión antes de elegir un tipo para fechas de nacimiento o plazos lejanos.
Las fracciones deben especificarse en la definición de la columna, por ejemplo TIMESTAMP(6). Las conversiones locales cerca de los cambios de hora pueden ser ambiguas; intercambia instantes en UTC siempre que sea posible.
Referencias
Versión en español publicada el 26 de septiembre de 2026.