Вам потрібно бути в MySQL версії 5.6.4 або пізнішої, щоб оголосити стовпці з дробово-типовими типами даних. Не впевнені, що у вас правильна версія? Спробуйте SELECT NOW(3)
. Якщо з’являється повідомлення про помилку, ви не маєте правильної версії.
Наприклад, DATETIME(3)
дасть вам мілісекунду з роздільною здатністю у ваших позначках часу та TIMESTAMP(6)
мікросекунду з позначкою часу у стилі * nix.
Прочитайте це: https://dev.mysql.com/doc/refman/8.0/en/fractional-seconds.html
NOW(3)
надасть вам поточний час від операційної системи вашого сервера MySQL з точністю до мілісекунд.
Якщо у вас є кілька мілісекунд з епохи Unix , спробуйте це, щоб отримати значення DATETIME (3)
FROM_UNIXTIME(ms * 0.001)
Наприклад, мітки часу Javascript представлені в мілісекундах з часів Unix .
(Зверніть увагу, що внутрішня дробова арифметика, наприклад * 0.001
, завжди обробляється як плаваюча крапка з подвійною точністю IEEE754, тому навряд чи ви втратите точність, поки Сонце не стане білою карликовою зіркою.)
Якщо ви використовуєте стару версію MySQL і вам потрібна допоточна точність часу, найкращий шлях - оновити. Все інше змусить вас робити безладні обхідні шляхи.
Якщо з якихось причин ви не можете оновити, ви можете розглянути можливість використання BIGINT
або DOUBLE
стовпців для зберігання міток часу Javascript, як нібито це цифри. FROM_UNIXTIME(col * 0.001)
все одно буде працювати нормально. Якщо вам потрібен поточний час для зберігання в такій колонці, ви можете використатиUNIX_TIMESTAMP() * 1000