U moet MySQL-versie 5.6.4 of hoger hebben om kolommen te declareren met datatypes van een fractie van een seconde. Weet je niet zeker of je de juiste versie hebt? Probeer SELECT NOW(3)
. Als je een foutmelding krijgt, heb je niet de juiste versie.
Bijvoorbeeld DATETIME(3)
geeft je milliseconde resolutie in je tijdstempels, en TIMESTAMP(6)
geeft je een resolutie van microseconden op een *nix-stijl tijdstempel.
Lees dit:https://dev.mysql.com/ doc/refman/8.0/en/fractionele-seconden.html
NOW(3)
geeft u de huidige tijd van het besturingssysteem van uw MySQL-server met een precisie van milliseconden.
Als je een aantal milliseconden hebt sinds het Unix-tijdperk , probeer dit om een DATETIME(3) waarde te krijgen
FROM_UNIXTIME(ms * 0.001)
Javascript-tijdstempels , worden bijvoorbeeld weergegeven in milliseconden sinds het Unix-tijdperk .
(Merk op dat MySQL interne fractionele rekenkunde, zoals * 0.001
, wordt altijd behandeld als IEEE754 dubbele precisie drijvende komma, dus het is onwaarschijnlijk dat u de precisie verliest voordat de zon een witte dwergster wordt.)
Als u een oudere versie van MySQL gebruikt en u een nauwkeurigheid van minder dan een seconde nodig hebt, kunt u het beste upgraden. Al het andere zal je dwingen om rommelige oplossingen te vinden.
Als u om de een of andere reden niet kunt upgraden, kunt u overwegen BIGINT
. te gebruiken of DOUBLE
kolommen om Javascript-tijdstempels op te slaan alsof het getallen zijn. FROM_UNIXTIME(col * 0.001)
zal nog goed werken. Als u de huidige tijd nodig heeft om in een dergelijke kolom op te slaan, kunt u UNIX_TIMESTAMP() * 1000
gebruiken