Du måste ha MySQL version 5.6.4 eller senare för att deklarera kolumner med datatyper för bråkdelssekunder. Är du inte säker på att du har rätt version? Försök med SELECT NOW(3)
. Om du får ett fel har du inte rätt version.
Till exempel, DATETIME(3)
ger dig millisekundsupplösning i dina tidsstämplar och TIMESTAMP(6)
ger dig mikrosekundersupplösning på en *nix-stil tidsstämpel.
Läs detta:https://dev.mysql.com/ doc/refman/8.0/en/fractional-seconds.html
NOW(3)
ger dig aktuell tid från din MySQL-servers operativsystem med millisekundsprecision.
Om du har ett antal millisekunder sedan Unix-epoken , prova detta för att få ett DATETIME(3)-värde
FROM_UNIXTIME(ms * 0.001)
Javascript-tidsstämplar , till exempel, representeras i millisekunder sedan Unix-epoken .
(Lägg märke till att MySQL intern bråkaritmetik, som * 0.001
, hanteras alltid som IEEE754 dubbel precision flytande punkt, så det är osannolikt att du kommer att förlora precision innan solen blir en vit dvärgstjärna.)
Om du använder en äldre version av MySQL och du behöver precision under andra sekunden är din bästa väg att uppgradera. Allt annat kommer att tvinga dig att göra stökiga lösningar.
Om du av någon anledning inte kan uppgradera kan du överväga att använda BIGINT
eller DOUBLE
kolumner för att lagra Javascript-tidsstämplar som om de vore siffror. FROM_UNIXTIME(col * 0.001)
kommer fortfarande att fungera OK. Om du behöver den aktuella tiden för att lagra i en sådan kolumn kan du använda UNIX_TIMESTAMP() * 1000