Sie müssen bei MySQL Version 5.6.4 oder höher sein, um Spalten mit Sekundenbruchteil-Datentypen zu deklarieren. Nicht sicher, dass Sie die richtige Version haben? Versuchen Sie SELECT NOW(3)
. Wenn Sie einen Fehler erhalten, haben Sie nicht die richtige Version.
Zum Beispiel gibt DATETIME(3)
Ihnen Millisekunde Auflösung in Ihren Zeitstempeln, und TIMESTAMP(6)
wird Ihnen Mikrosekundenauflösung auf einem * nix-style Zeitstempel geben.
dies lesen: http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
NOW(3)
geben Ihnen die aktuelle Zeit von Ihrem MySQL Server-Betriebssystem mit Millisekunden-Präzision.
Wenn Sie eine Anzahl von Millisekunden seit Beginn der Unix epoch haben, versuchen Sie dies ein DATETIME- (3) Wert
FROM_UNIXTIME(ms * 0.001)
Javascript timestamps, zum Beispiel zu bekommen, werden in Millisekunden seit dem Unix epoch vertreten.
(Beachten Sie, dass MySQL interne Bruchrechnung, wie * 0.001
, immer als IEEE754 double precision floating point behandelt wird, so dass es unwahrscheinlich ist, Sie Präzision verlieren werden, bevor die Sonne ein weißer Zwergstern wird.)
Wenn Sie‘ Wenn Sie eine ältere Version von MySQL verwenden und Sie benötigen Zeit im Sekundentakt, ist Ihr bester Weg das Upgrade. Alles andere wird Sie dazu zwingen, unordentliche Problemumgehungen zu machen.
Wenn Sie aus irgendeinem Grund nicht upgraden können, können Sie die Spalten BIGINT
oder DOUBLE
verwenden, um Javascript-Zeitstempel wie Zahlen zu speichern. FROM_UNIXTIME(col * 0.001)
funktioniert immer noch OK. Wenn Sie die aktuelle Zeit benötigen, um in einer solchen Spalte zu speichern, könnten Sie UNIX_TIMESTAMP() * 1000
verwenden Welche Version von MySQL? – Strawberry
mysql Ver 14.14 Distrib 5.6.11, für Win32 (x86) – Luixv
Sieht aus, als ob Sie Glück haben. – Strawberry