DATETIME vs TIMESTAMP dans MySQL
-
Similitudes entre
DATETIMEetTIMESTAMP -
Différences entre
DATETIMEetTIMESTAMP -
Exemple pour comprendre l’utilisation de
DATETIMEetTIMESTAMPdans 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 :
DATETIMEetTIMESTAMPnécessitent respectivement 5 octets et 4 octets.TIMESTAMPest affecté par le fuseau horaire, maisDATETIMEreste constant.- La plage prise en charge pour
DATETIMEetTIMESTAMPest'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. DATETIMEne peut pas être indexé alors queTIMESTAMPpeut l’être.- Les requêtes avec
TIMESTAMPseront 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.
