DATETIME vs TIMESTAMP dans MySQL
-
Similitudes entre
DATETIME
etTIMESTAMP
-
Différences entre
DATETIME
etTIMESTAMP
-
Exemple pour comprendre l’utilisation de
DATETIME
etTIMESTAMP
dans MySQL - Conclusion
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
etTIMESTAMP
nécessitent respectivement 5 octets et 4 octets.TIMESTAMP
est affecté par le fuseau horaire, maisDATETIME
reste constant.- La plage prise en charge pour
DATETIME
etTIMESTAMP
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 queTIMESTAMP
peut l’être.- Les requêtes avec
TIMESTAMP
seront mises en cache, mais ce n’est pas le cas avecDATETIME
.
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 :
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 :
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
.