Sobes.tech
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 :

    • DATETIME stocke l'année, le mois, le jour, l'heure, la minute, la seconde.
    • TIMESTAMP stocke le nombre de secondes écoulées depuis le début de l'époque Unix (1er janvier 1970 UTC).
  • Plage de valeurs :

    • DATETIME a généralement une plage plus large de dates (par exemple, de '1000-01-01 00:00:00' à '9999-12-31 23:59:59').
    • TIMESTAMP a 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 :

    • DATETIME ne dépend pas du fuseau horaire et enregistre la valeur exacte saisie.
    • TIMESTAMP est 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 TIMESTAMP est plus petit (4 octets) par rapport à DATETIME (8 octets).
  • Mise à jour automatique :

    • TIMESTAMP peut être configuré pour se mettre à jour automatiquement lors de la modification de la ligne (si utilisé par défaut ou spécifié avec ON UPDATE CURRENT_TIMESTAMP), ce qui est pratique pour les champs qui suivent la dernière modification. DATETIME n'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
);