Juste une petite question concernant le stockage du "temps" dans une base de données. J'enregistre le temps d'exécution des utilisateurs au format 00: 00: 00: 00 (heures, minutes, secondes, millisecondes).
À l'origine, j'allais le stocker sous, TIME
mais j'ai réalisé que MySQL ne prend pas en charge les millisecondes dans ce type.
Je vais stocker le temps réel pris par le chronomètre des utilisateurs, pas le moment où ils ont couru et fini (cela sera calculé avant d'être inséré).
Quel serait le meilleur type de champ à utiliser? Je pensais à l'un double
ou à l' autre float
, mais je ne suis pas sûr que cela fonctionnerait?
la source
interval
données SQL standard . Mais tous les SGBD (et certainement pas MySQL) ne le supportent pas.Cela dépend de combien de temps vous voulez mesurer. Si vous n'enregistrez pas plus longtemps que 2 ^ 32 ou 4294967296 ms, un int normal non signé est très bien. Cela correspond à environ 50 jours d'horloge, en passant.
Si vous stockiez des horodatages Unix ou des intervalles plus grands, essayez d'utiliser bigint. Cela vous donne 8 octets d'espace, ou la possibilité d'enregistrer des temps aussi longs à 1,84467440737096e + 19 ms (ce qui correspond à environ 500 millions d'années)
la source
Si vous utilisez MySQL 5.6.4 ou version ultérieure, vous pouvez utiliser le
TIME(3)
,DATETIME(3)
et lesTIMESTAMP(3)
types de colonnes pour stocker jusqu'à 6 décimales (remplacez3
le nombre de décimales dont vous avez besoin). Une partie fractionnaire est ajoutée à la chaîne de temps après le point; exemple:2018-09-08 17:51:04.781
.Référence officielle
la source