Maison > base de données > tutoriel mysql > le corps du texte

Quelle est la différence entre les types de données MySQL DATETIME et TIMESTAMP ?

王林
Libérer: 2023-09-17 23:41:03
avant
1183 Les gens l'ont consulté

MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?

Les deux types de données stockent les données au format « AAAA-MM-JJ HH:MM:SS » et incluent la date et l'heure. Malgré ces similitudes, ils présentent les différences suivantes -

  • Range - Le type de données datetime prend en charge les dates et heures entre 1000 - 01-01 00:00:00 et 9999-12-31 23 : 59:59. Cependant, le type de données d'horodatage prend en charge les dates et heures comprises entre « 1970-01-01 00:00:01 » et « 2038-01-19 08:44:07 ».
  • Taille - Datetime nécessite 5 octets plus 3 octets supplémentaires pour le stockage de données en fractions de secondes. D'autre part, le type de données d'horodatage nécessite 4 octets plus 3 octets supplémentaires pour le stockage de données en fractions de secondes. Mais avant MySQL 5.6.4, DateTime nécessitait 8 octets plus 3 octets supplémentaires pour le stockage de données en fractions de seconde.
  • Conversion d'un fuseau horaire à un autre - En fait, dans MySQL5+, les valeurs d'horodatage sont converties de l'heure actuelle en UTC et vice versa, tandis que datetime ne subit aucune conversion.
  • Indexation - Les données d'horodatage peuvent être indexées, mais pas les données date/heure.
  • Indexation - Les données d'horodatage peuvent être indexées, mais pas les données date/heure. li>
  • Query Cache - Les requêtes de type de données timestamp peuvent être mises en cache, mais les requêtes de type datetime ne peuvent pas être mises en cache.

Ce qui précède présente quelques-unes des principales différences entre les types de données DATETIME et TIMESTAMP, l'exemple suivant le démontrera -

Exemple

mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.44 sec)

mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.04 sec)

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)

mysql> Create table test_timestamp(time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);
Query OK, 0 rows affected (0.64 sec)

mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);
Query OK, 1 row affected (0.06 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:50 |
+---------------------+
1 row in set (0.00 sec)
Copier après la connexion

Maintenant, dans la requête suivante, nous avons changé le fuseau horaire en UTC-05:00 et ont Les résultats pour les tables de type de données TIMESTAMP ont également changé.

mysql> SET @@session.time_zone = '-5:00';
Query OK, 0 rows affected (0.00 sec)

mysql> Select * from test_timestamp;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 06:59:50 |
+---------------------+
1 row in set (0.00 sec)
Copier après la connexion

sortie

mysql> Select * from test_datetime;
+---------------------+
| time                |
+---------------------+
| 2017-11-14 17:29:03 |
+---------------------+
1 row in set (0.00 sec)
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal