Maison > base de données > tutoriel mysql > Une explication du problème de report de temps dans MySQL

Une explication du problème de report de temps dans MySQL

王林
Libérer: 2020-01-21 20:15:08
avant
2792 Les gens l'ont consulté

Une explication du problème de report de temps dans MySQL

Après la mise à jour de MySQL vers 5.6.4, une nouvelle fonctionnalité appelée secondes fonctionnelles a été ajoutée, qui peut enregistrer la valeur en millisecondes du temps. Cependant, la base de données actuelle n'enregistre pas les valeurs en millisecondes, il y aura donc un problème car le temps en Java sera arrondi si les millisecondes dépassent 500.

Ce qui suit est un exemple qui montre comment le temps est transporté. Créez d'abord un tableau :

CREATE TABLE test_time (
 time_sec   datetime,
 time_millis datetime(3),
 time_micros datetime(6),
 stamp_sec  timestamp,
 stamp_millis timestamp(3),
 stamp_micros timestamp(6)
);
Copier après la connexion

Certains amis ne savent peut-être pas que la date, l'heure et l'horodatage peuvent être définis avec précision. La valeur de précision est de 0 à 6, ce qui signifie le nombre de décimales conservées. Évidemment, conserver 3 bits peut être considéré comme une précision à la milliseconde, et conserver 6 bits peut être considéré comme une précision à la microseconde.

(Tutoriel vidéo d'apprentissage en ligne recommandé : Tutoriel vidéo MySQL )

Ensuite, nous insérons un enregistrement :

INSERT INTO test_time
( time_sec, time_millis, time_micros,
 stamp_sec, stamp_millis, stamp_micros )
VALUES(
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654',
 '2019-11-30 12:34:56.987654'
);
Copier après la connexion

Puis sélectionnons à nouveau * À partir de la requête test_time, vous pouvez voir les résultats suivants :

time_sec             |time_millis            |time_micros               |stamp_sec            |stamp_millis           |stamp_micros              |
---------------------|-----------------------|--------------------------|---------------------|-----------------------|--------------------------|
2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|2019-11-30 12:34:57.0|2019-11-30 12:34:56.988|2019-11-30 12:34:56.987654|
Copier après la connexion

Vous pouvez voir que les secondes valeurs de time_sec et stamp_sec dans la base de données ont été arrondies et que les valeurs en millisecondes de time_millis et stamp_millis ont été arrondi.

On peut voir qu'il existe deux méthodes pour éviter de telles erreurs :

1. Utilisez datetime(6) ou timestamp(6) lors de la définition des champs ;

2. Il n'y a pas de précision lors de la définition du champ, mais la valeur en millisecondes doit être tronquée avant de stocker l'heure dans la base de données.

Articles et tutoriels connexes recommandés : Tutoriel mysql

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!

Étiquettes associées:
source:jb51.net
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