È necessario essere in MySQL versione 5.6.4 o successiva per dichiarare colonne con tipi di dati temporali frazionari. 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 in microsecondi su un timestamp in stile * nix.
Leggi questo: http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
NOW(3)
vi darà il tempo presente dal sistema operativo del server MySQL con precisione millisecondo.
Se si dispone di un numero di millisecondi dal momento che il Unix epoch, provate questo per ottenere un DATETIME (3) Valore
FROM_UNIXTIME(ms * 0.001)
Javascript timestamps, per esempio, sono rappresentate in millisecondi a partire dalla Unix epoch.
(Si noti che MySQL aritmetica frazionale interno, come * 0.001
, è sempre gestito come virgola mobile IEEE754 doppia precisione, quindi è improbabile che si perde di precisione prima che il Sole diventa una stella nana bianca.)
Se si' usando una versione precedente di MySQL e hai bisogno di precisione in secondi, il tuo miglior percorso è quello di aggiornare. Qualsiasi altra cosa ti costringerà a fare soluzioni disordinate.
Se, per qualche motivo, non è possibile eseguire l'aggiornamento, è possibile considerare l'utilizzo delle colonne BIGINT
o DOUBLE
per memorizzare timestamp JavaScript come se fossero numeri. FROM_UNIXTIME(col * 0.001)
funzionerà ancora OK. Se ti serve l'ora corrente per archiviare in tale colonna, puoi utilizzare UNIX_TIMESTAMP() * 1000
fonte
2014-10-10 12:23:21
Quale versione di MySQL? – Strawberry
mysql Ver 14.14 Distrib 5.6.11, per Win32 (x86) – Luixv
Sembra che tu sia fortunato. – Strawberry