Musisz być w MySQL w wersji 5.6.4 lub nowszej, aby zadeklarować kolumny z typami danych ułamkowymi sekundami. Nie jesteś pewien, czy masz odpowiednią wersję? Spróbuj SELECT NOW(3). Jeśli pojawi się błąd, oznacza to, że nie masz odpowiedniej wersji.
Na przykład, DATETIME(3)da ci rozdzielczość milisekundową w twoich znacznikach czasu i TIMESTAMP(6)da ci rozdzielczość mikrosekundową na znaczniku czasu w stylu * nix.
Przeczytaj to: https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html
NOW(3) poda aktualny czas z systemu operacyjnego serwera MySQL z dokładnością do milisekund.
Jeśli masz pewną liczbę milisekund od epoki Uniksa , spróbuj tego, aby uzyskać wartość DATETIME (3)
FROM_UNIXTIME(ms * 0.001)
Na przykład sygnatury czasowe JavaScript są przedstawiane w milisekundach od czasu wprowadzenia epoki Uniksa .
(Zauważ, że wewnętrzna arytmetyka ułamkowa MySQL, na przykład * 0.001, jest zawsze traktowana jako zmiennoprzecinkowa podwójnej precyzji IEEE754, więc jest mało prawdopodobne, że stracisz precyzję, zanim Słońce stanie się gwiazdą białego karła.)
Jeśli używasz starszej wersji MySQL i potrzebujesz dokładności co do sekundy, najlepszą drogą jest aktualizacja. Cokolwiek innego zmusi Cię do wykonania niechlujnych obejść.
Jeśli z jakiegoś powodu nie możesz uaktualnić, możesz rozważyć użycie kolumn BIGINTlub DOUBLEdo przechowywania znaczników czasu JavaScript tak, jakby były liczbami. FROM_UNIXTIME(col * 0.001)nadal będzie działać OK. Jeśli potrzebujesz aktualnego czasu do przechowywania w takiej kolumnie, możesz użyćUNIX_TIMESTAMP() * 1000