DATETIME vs TIMESTAMP dans MySQL

Mehvish Ashiq 15 février 2024
  1. Similitudes entre DATETIME et TIMESTAMP
  2. Différences entre DATETIME et TIMESTAMP
  3. Exemple pour comprendre l’utilisation de DATETIME et TIMESTAMP dans MySQL
  4. Conclusion
DATETIME vs TIMESTAMP dans MySQL

DATETIME et TIMESTAMP sont deux types de données différents que vous pouvez utiliser pour stocker une valeur qui doit contenir la partie date et heure.

Dans cet article, nous allons découvrir le format dans lequel il est stocké dans la base de données et la mémoire requise par chaque type de données. Nous examinerons également les similitudes et les différences entre les deux types de données et essaierons de comprendre via un exemple.

Similitudes entre DATETIME et TIMESTAMP

DATETIME et TIMESTAMP présentent quelques similitudes répertoriées ci-dessous :

  • Les deux stockent le même type de données, en deux parties (date et heure).
  • Les deux ont le même format lors de leur interrogation.
  • Le format de stockage dans la base de données est le même (YYYY-MM-DD hh:mm:ss).
  • Les deux nécessitent des octets supplémentaires pour une précision fractionnaire.
  • Chaque fois que les enregistrements sont mis à jour, les deux peuvent modifier les données avec la date et l’heure actuelles.

Différences entre DATETIME et TIMESTAMP

DATETIME et TIMESTAMP présentent les différences suivantes :

  • DATETIME et TIMESTAMP nécessitent respectivement 5 octets et 4 octets.
  • TIMESTAMP est affecté par le fuseau horaire, mais DATETIME reste constant.
  • La plage prise en charge pour DATETIME et TIMESTAMP est '1000-01-01 00:00:00' à '9999-12-31 23:59:59' et '1970-01-01 00:00:01'UTC à '2038-01-19 03:14:07' UTC, respectivement.
  • DATETIME ne peut pas être indexé alors que TIMESTAMP peut l’être.
  • Les requêtes avec TIMESTAMP seront mises en cache, mais ce n’est pas le cas avec DATETIME.

Exemple pour comprendre l’utilisation de DATETIME et TIMESTAMP dans MySQL

Supposons que vous exploitez un café dans votre pays. Chaque client reçoit une facture après avoir payé la facture.

Cette facture comporte une date et une heure en plus d’autres détails. Comme vous gérez la boutique dans votre pays uniquement où tous vos clients seront dans le même fuseau horaire, vous utiliserez DATETIME.

Changeons un peu ce scénario; vous avez maintenant dix cafés dans différents pays, chaque pays a son fuseau horaire. Les clients y recevront également des factures, mais comment pouvez-vous afficher la date et l’heure en fonction du fuseau horaire des clients.

Ici, vous utiliserez TIMESTAMP. Pourquoi? Étant donné que TIMESTAMP est affecté par le fuseau horaire, ce qui signifie que la valeur de TIMESTAMP sera convertie du fuseau horaire actuel (heure du serveur) en UTC (fuseau horaire universel) pour le stockage et de retour au fuseau horaire actuel (heure du serveur ) lors de la récupération.

Exemple de code :

Veuillez exécuter le code suivant dans votre MySQL (nous utilisons MySQL 8.0.27 pour ce tutoriel) et voir la sortie donnée après le code.

#create schema
CREATE SCHEMA db_practice_datetime_timestamp;

#create table
CREATE TABLE practice_datetime_and_timestamp (
    ID INT AUTO_INCREMENT PRIMARY KEY,
    DATE_TIME DATETIME,
    TIME_STAMP TIMESTAMP
    );
#insert data   
INSERT INTO practice_datetime_and_timestamp(TIME_STAMP,DATE_TIME)
VALUES(NOW(),NOW());

#read data
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;

Production :

datetime vs horodatage dans mysql - date partie a

Maintenant, exécutez le code ci-dessous et voyez sa sortie.

SET time_zone = '-05:00';
SELECT DATE_TIME, TIME_STAMP from practice_datetime_and_timestamp;

Production :

datetime vs horodatage dans mysql - date partie b

Vous avez peut-être remarqué que l’heure a changé pour la colonne TIME_STAMP, mais les données pour DATE_TIME restent les mêmes.

Conclusion

Dans cette discussion, nous avons conclu que DATETIME et TIMESTAMP stockent les mêmes données en fonction de vos besoins. Si vous voulez que vos données soient affectées par fuseau horaire, optez pour TIMESTAMP. Sinon, il est bon d’utiliser DATETIME.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook