sql >> Database teknologi >  >> RDS >> Mysql

Tidsstempel med en millisekunds præcision:Sådan gemmer du dem i MySQL

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



  1. Sådan får du hver Nth Row i MySQL

  2. Oracle Database Explorer:Gratis træning og akkreditering

  3. Den nemme guide til, hvordan du bruger underforespørgsler i SQL Server

  4. PostgreSQL 9-installation på Windows:Kan ikke skrive inde i TEMP-miljøstien.