Mysql
 sql >> Base de données >  >> RDS >> Mysql

Horodatage avec une précision à la milliseconde :comment les enregistrer dans MySQL

Vous devez être à MySQL version 5.6.4 ou ultérieure pour déclarer des colonnes avec des types de données fractionnaires. Vous n'êtes pas sûr d'avoir la bonne version ? Essayez SELECT NOW(3) . Si vous obtenez une erreur, vous n'avez pas la bonne version.

Par exemple, DATETIME(3) vous donnera une résolution en millisecondes dans vos horodatages, et TIMESTAMP(6) vous donnera une résolution en microsecondes sur un horodatage de style * nix.

Lisez ceci :https://dev.mysql.com/ doc/refman/8.0/en/fractional-seconds.html

NOW(3) vous donnera l'heure actuelle du système d'exploitation de votre serveur MySQL avec une précision à la milliseconde.

Si vous avez un certain nombre de millisecondes depuis l'époque Unix , essayez ceci pour obtenir une valeur DATETIME(3)

FROM_UNIXTIME(ms * 0.001)

Horodatages JavaScript , par exemple, sont représentés en millisecondes depuis l'époque Unix .

(Remarquez que l'arithmétique fractionnaire interne de MySQL, comme * 0.001 , est toujours traité comme une virgule flottante double précision IEEE754, il est donc peu probable que vous perdiez en précision avant que le Soleil ne devienne une naine blanche.)

Si vous utilisez une ancienne version de MySQL et que vous avez besoin d'une précision inférieure à la seconde, votre meilleur chemin consiste à mettre à niveau. Tout le reste vous forcera à faire des solutions de contournement désordonnées.

Si, pour une raison quelconque, vous ne pouvez pas mettre à niveau, vous pouvez envisager d'utiliser BIGINT ou DOUBLE colonnes pour stocker les horodatages Javascript comme s'il s'agissait de nombres. FROM_UNIXTIME(col * 0.001) fonctionnera toujours bien. Si vous avez besoin de stocker l'heure actuelle dans une telle colonne, vous pouvez utiliser UNIX_TIMESTAMP() * 1000