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

Timestamp con una precisione al millisecondo:come salvarli in MySQL

È necessario essere in MySQL versione 5.6.4 o successiva per dichiarare colonne con tipi di dati di tempo frazionario di secondo. Non sei sicuro di avere la versione giusta? Prova SELECT NOW(3) . Se ricevi un errore, non hai la versione giusta.

Ad esempio, DATETIME(3) ti darà una risoluzione in millisecondi nei tuoi timestamp e TIMESTAMP(6) ti darà una risoluzione di microsecondi su un timestamp *stile nix.

Leggi questo:https://dev.mysql.com/ doc/refman/8.0/en/fractional-seconds.html

NOW(3) ti darà l'ora presente dal sistema operativo del tuo server MySQL con precisione al millisecondo.

Se hai un numero di millisecondi dall'Epoca Unix , prova questo per ottenere un valore DATETIME(3)

FROM_UNIXTIME(ms * 0.001)

Timestamp JavaScript , ad esempio, sono rappresentati in millisecondi da Epoca Unix .

(Nota che l'aritmetica frazionaria interna di MySQL, come * 0.001 , viene sempre gestito come virgola mobile a doppia precisione IEEE754, quindi è improbabile che perda la precisione prima che il Sole diventi una nana bianca.)

Se stai utilizzando una versione precedente di MySQL e hai bisogno di una precisione temporale inferiore al secondo, il tuo percorso migliore è l'aggiornamento. Qualsiasi altra cosa ti costringerà a fare soluzioni disordinate.

Se, per qualche motivo, non riesci a eseguire l'upgrade, potresti prendere in considerazione l'utilizzo di BIGINT o DOUBLE colonne per memorizzare i timestamp Javascript come se fossero numeri. FROM_UNIXTIME(col * 0.001) funzionerà ancora bene. Se hai bisogno dell'ora corrente da memorizzare in una tale colonna, puoi usare UNIX_TIMESTAMP() * 1000