Du skal være på MySQL version 5.6.4 eller nyere for at erklære kolonner med datatyper på brøksekunder. Er du ikke sikker på, at du har den rigtige version? Prøv SELECT NOW(3)
. Hvis du får en fejl, har du ikke den rigtige version.
For eksempel DATETIME(3)
vil give dig millisekund opløsning i dine tidsstempler og TIMESTAMP(6)
vil give dig mikrosekund opløsning på et *nix-stil tidsstempel.
Læs dette:https://dev.mysql.com/ doc/refman/8.0/da/fractional-seconds.html
NOW(3)
vil give dig den nuværende tid fra din MySQL-servers operativsystem med millisekunds præcision.
Hvis du har et antal millisekunder siden Unix-epoken , prøv dette for at få en DATETIME(3)-værdi
FROM_UNIXTIME(ms * 0.001)
Javascript-tidsstempler , for eksempel repræsenteret i millisekunder siden Unix-epoken .
(Bemærk, at MySQL intern brøkregning, såsom * 0.001
, håndteres altid som IEEE754 dobbelt præcision flydende punkt, så det er usandsynligt, at du mister præcision, før Solen bliver en hvid dværgstjerne.)
Hvis du bruger en ældre version af MySQL, og du har brug for subsecond time-præcision, er din bedste vej at opgradere. Alt andet vil tvinge dig til at lave rodede løsninger.
Hvis du af en eller anden grund ikke kan opgradere, kan du overveje at bruge BIGINT
eller DOUBLE
kolonner for at gemme Javascript-tidsstempler, som om de var tal. FROM_UNIXTIME(col * 0.001)
vil stadig fungere OK. Hvis du har brug for den aktuelle tid til at gemme i en sådan kolonne, kan du bruge UNIX_TIMESTAMP() * 1000