Sie müssen sich in MySQL Version 5.6.4 oder höher befinden, um Spalten mit Datentypen in Sekundenbruchteilen deklarieren zu können. Sie sind sich nicht sicher, ob Sie die richtige Version haben? Versuchen Sie es SELECT NOW(3)
. Wenn Sie eine Fehlermeldung erhalten, haben Sie nicht die richtige Version.
Sie erhalten beispielsweise DATETIME(3)
eine Millisekundenauflösung in Ihren Zeitstempeln und TIMESTAMP(6)
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)
Sie erhalten die aktuelle Zeit vom Betriebssystem Ihres MySQL-Servers mit Millisekundengenauigkeit.
Wenn Sie seit der Unix-Epoche einige Millisekunden Zeit haben , versuchen Sie dies, um einen DATETIME (3) -Wert zu erhalten
FROM_UNIXTIME(ms * 0.001)
Javascript-Zeitstempel werden beispielsweise seit der Unix-Epoche in Millisekunden dargestellt .
(Beachten Sie, dass die interne gebrochene MySQL- * 0.001
Brucharithmetik immer als Gleitkomma mit doppelter Genauigkeit nach IEEE754 behandelt wird. 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 zwingt Sie dazu, unordentliche Problemumgehungen durchzuführen.
Wenn Sie aus irgendeinem Grund kein Upgrade durchführen können, können Sie in Betracht ziehen, BIGINT
oder DOUBLE
Spalten zum Speichern von Javascript-Zeitstempeln zu verwenden, als wären sie Zahlen. FROM_UNIXTIME(col * 0.001)
wird immer noch OK funktionieren. Wenn Sie die aktuelle Zeit zum Speichern in einer solchen Spalte benötigen, können Sie diese verwendenUNIX_TIMESTAMP() * 1000