Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeitstempel mit Millisekunden-Präzision:So speichern Sie sie in MySQL

Sie müssen die MySQL-Version 5.6.4 oder höher verwenden, um Spalten mit Sekundenbruchteil-Datentypen zu deklarieren. Sie sind sich nicht sicher, ob Sie die richtige Version haben? Versuchen Sie SELECT NOW(3) . Wenn Sie eine Fehlermeldung erhalten, haben Sie nicht die richtige Version.

Beispiel:DATETIME(3) gibt Ihnen Millisekundenauflösung in Ihren Zeitstempeln und TIMESTAMP(6) gibt Ihnen eine Mikrosekundenauflösung für einen Zeitstempel im *nix-Stil.

Lesen Sie dies:https://dev.mysql.com/ doc/refman/8.0/en/fractional-seconds.html

NOW(3) liefert Ihnen die aktuelle Uhrzeit vom Betriebssystem Ihres MySQL-Servers mit Millisekunden-Präzision.

Wenn seit der Unix-Epoche einige Millisekunden vergangen sind , versuchen Sie dies, um einen DATETIME(3)-Wert zu erhalten

FROM_UNIXTIME(ms * 0.001)

Javascript-Zeitstempel werden beispielsweise in Millisekunden seit der Unix-Epoche dargestellt .

(Beachten Sie, dass die MySQL-interne Brucharithmetik wie * 0.001 , wird immer als IEEE754-Gleitkommazahl mit doppelter Genauigkeit behandelt, daher ist es unwahrscheinlich, dass Sie an Genauigkeit verlieren, bevor die Sonne zu einem weißen Zwergstern wird.)

Wenn Sie eine ältere Version von MySQL verwenden und eine Zeitgenauigkeit von weniger als einer Sekunde benötigen, ist ein Upgrade der beste Weg. Alles andere wird Sie dazu zwingen, unordentliche Problemumgehungen vorzunehmen.

Wenn Sie aus irgendeinem Grund nicht upgraden können, sollten Sie die Verwendung von BIGINT in Betracht ziehen oder DOUBLE Spalten, um Javascript-Zeitstempel so zu speichern, als wären sie Zahlen. FROM_UNIXTIME(col * 0.001) wird noch OK funktionieren. Wenn Sie die aktuelle Uhrzeit in einer solchen Spalte speichern möchten, können Sie UNIX_TIMESTAMP() * 1000 verwenden