Junior
Décrivez la différence entre les types de données DATETIME et TIMESTAMP.
sobes.tech IA
Réponse de l'IA
Les principales différences entre DATETIME et TIMESTAMP dans la plupart des bases de données SQL (par exemple, MySQL) sont les suivantes :
-
Stockage :
DATETIMEstocke l'année, le mois, le jour, l'heure, la minute, la seconde.TIMESTAMPstocke le nombre de secondes écoulées depuis le début de l'époque Unix (1er janvier 1970 UTC).
-
Plage de valeurs :
DATETIMEa généralement une plage plus large de dates (par exemple, de '1000-01-01 00:00:00' à '9999-12-31 23:59:59').TIMESTAMPa une plage limitée, dépendant de la représentation en 32 bits ou 64 bits, généralement jusqu'en 2038 pour 32 bits.
-
Fuseau horaire :
DATETIMEne dépend pas du fuseau horaire et enregistre la valeur exacte saisie.TIMESTAMPest converti du fuseau horaire actuel en UTC lors de l'enregistrement et inversement lors de l'extraction, donc sa valeur dépend du fuseau horaire du client.
-
Taille :
- La taille de stockage peut varier légèrement, mais souvent
TIMESTAMPest plus petit (4 octets) par rapport àDATETIME(8 octets).
- La taille de stockage peut varier légèrement, mais souvent
-
Mise à jour automatique :
TIMESTAMPpeut être configuré pour se mettre à jour automatiquement lors de la modification de la ligne (si utilisé par défaut ou spécifié avecON UPDATE CURRENT_TIMESTAMP), ce qui est pratique pour les champs qui suivent la dernière modification.DATETIMEn'a pas cette capacité intégrée (bien qu'on puisse y parvenir avec des triggers).
Tableau comparatif :
| Caractéristique | DATETIME | TIMESTAMP |
|---|---|---|
| Format de stockage | Année, mois, jour, heure, minute, seconde | Secondes depuis l'époque Unix (UTC) |
| Fuseau horaire | Indépendant du fuseau horaire | Dépend du fuseau horaire du client |
| Plage de valeurs | Généralement plus large, jusqu'en 9999 | Limité, généralement jusqu'en 2038 (pour 32 bits) |
| Mise à jour automatique | Non (intégré) | Oui (optionnel, ON UPDATE CURRENT_TIMESTAMP) |
| Taille typique | 8 octets | 4 octets |
Exemple SQL pour créer des tables :
-- Exemple de table avec DATETIME
CREATE TABLE events_datetime (
id INT PRIMARY KEY,
event_name VARCHAR(255),
event_time DATETIME
);
-- Exemple de table avec TIMESTAMP
CREATE TABLE events_timestamp (
id INT PRIMARY KEY,
event_name VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Mise en place automatique de l'heure de création
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- Mise à jour automatique lors de la modification
);