timestampinfo.fr
Outils & documentation

LA DOCUMENTATION DU TEMPS

Timestamps MySQL : conversion et stockage

Utiliser FROM_UNIXTIME et UNIX_TIMESTAMP avec une convention UTC explicite.

Fixer le fuseau de session

Les fonctions de conversion MySQL dépendent du fuseau de session. Dans cet exemple, la session est réglée sur 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 ou DATETIME ?

MySQL convertit les valeurs TIMESTAMP entre le fuseau de session et UTC lors du stockage et de la lecture. DATETIME conserve des champs calendaires sans cette conversion automatique. Aucun des deux ne mémorise à lui seul un nom de fuseau comme 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');

Vérifier la plage et la précision

Dans MySQL 8.4, TIMESTAMP reste limité à une plage allant de 1970 à janvier 2038. DATETIME a une plage différente. Vérifiez la documentation de votre version avant de choisir un type pour des dates de naissance ou des échéances lointaines.

Les fractions doivent être prévues dans la définition de la colonne, par exemple TIMESTAMP(6). Les conversions locales autour du changement d’heure peuvent être ambiguës ; échangez des instants en UTC lorsque c’est possible.

Références

Documentation de référence

Ouvrir le convertisseur