Le type SQL et le nombre Unix
Un type SQL TIMESTAMP n’est pas universellement un entier en secondes. Sa plage, sa précision et la prise en charge du fuseau dépendent du moteur. Consultez les guides dédiés à PostgreSQL, MySQL et MariaDB pour le stockage.
PostgreSQL
to_timestamp() convertit les secondes Unix en timestamp with time zone. L’affichage dépend du fuseau de session. Ici, la sortie est explicitement UTC.
SELECT to_timestamp(1711972800) AT TIME ZONE 'UTC';
-- 2024-04-01 12:00:00
SELECT EXTRACT(EPOCH FROM TIMESTAMPTZ '2024-04-01 12:00:00+00');
-- 1711972800.000000AT TIME ZONE 'UTC' produit ici une date sans fuseau dont les champs représentent UTC. Ne perdez pas cette convention en la transmettant à une autre application.
MySQL
FROM_UNIXTIME() affiche dans le fuseau de la session. Fixez-le avant votre requête pour obtenir des résultats reproductibles.
SET time_zone = '+00:00';
SELECT FROM_UNIXTIME(1711972800);
-- 2024-04-01 12:00:00
SELECT UNIX_TIMESTAMP('2024-04-01 12:00:00');
-- 1711972800SQLite
Le modificateur unixepoch interprète le nombre comme des secondes Unix. Sans modificateur localtime, l’affichage reste en UTC.
SELECT datetime(1711972800, 'unixepoch');
-- 2024-04-01 12:00:00
SELECT strftime('%s', '2024-04-01T12:00:00Z');
-- '1711972800' (texte)Le type SQL TIMESTAMP n’est pas toujours un entier Unix. Vérifiez le type, la précision et les conventions de fuseau de votre moteur et de votre application.
Références
PostgreSQL · MySQL · SQLite