sql >> Database >  >> RDS >> Mysql

Tijdstempel met een precisie van milliseconden:hoe u ze opslaat in MySQL

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



  1. Een array invoegen met behulp van Sequel gem in PostgreSQL

  2. 6 manieren om een ​​maand aan een datum toe te voegen in MariaDB

  3. De Aria Storage Engine gebruiken met MariaDB Server

  4. Wat is het verschil tussen VARCHAR en CHAR?