Поиск…


замечания

Вы должны быть в MySQL версии 5.6.4 или новее, чтобы объявлять столбцы с дробно-временными типами данных.

Например, DATETIME(3) даст вам миллисекундное разрешение на ваших временных отметках, а TIMESTAMP(6) предоставит вам разрешение по микросекундам на отметке времени в стиле nix.

Прочтите это: http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html

NOW(3) предоставит вам текущее время с вашей операционной системы сервера MySQL с точностью до миллисекунды.

(Обратите внимание, что внутренняя дробная арифметика MySQL, такая как * 0.001, всегда обрабатывается как плавающая точка с двойной точностью IEEE754, поэтому маловероятно, что вы потеряете точность до того, как Солнце станет звездой белого карлика.)

Получить текущее время с точностью до миллисекунды

SELECT NOW(3)

делает трюк.

Получить текущее время в форме, которая похожа на метку времени Javascript.

Временные метки Javascript основаны на почтенном типе данных UNIX time_t и показывают количество миллисекунд с 1970-01-01 00:00:00 UTC.

Это выражение получает текущее время как целое число timestamp Javascript. (Он делает это правильно, независимо от текущей настройки time_zone).

 ROUND(UNIX_TIMESTAMP(NOW(3)) * 1000.0, 0)

Если у вас есть значения TIMESTAMP хранящиеся в столбце, вы можете получить их как целочисленные временные метки Javascript, используя функцию UNIX_TIMESTAMP ().

  SELECT ROUND(UNIX_TIMESTAMP(column) * 1000.0, 0)

Если ваш столбец содержит столбцы DATETIME и вы извлекаете их как отметки времени Javascript, эти временные метки будут компенсированы смещением часового пояса временного пояса, в котором они хранятся.

Создайте таблицу со столбцами для хранения суб-второго времени.

CREATE TABLE times (
     dt DATETIME(3), 
     ts TIMESTAMP(3)
 );

создает таблицу с полями даты / времени с точностью до миллисекунд.

 INSERT INTO times VALUES (NOW(3), NOW(3));

вставляет строку, содержащую значения NOW() с точностью до миллисекунды в таблицу.

 INSERT INTO times VALUES ('2015-01-01 16:34:00.123','2015-01-01 16:34:00.128');

вставляет конкретные значения точности миллисекунды.

Обратите внимание, что вы должны использовать NOW(3) а не NOW() если вы используете эту функцию для вставки высокоточных значений времени.

Преобразование значения даты / времени с точностью до миллисекунды в текст.

%f - спецификатор формата дробной точности для функции DATE_FORMAT () .

SELECT DATE_FORMAT(NOW(3), '%Y-%m-%d %H:%i:%s.%f')

отображает значение типа 2016-11-19 09:52:53.248000 с дробными микросекундами. Поскольку мы использовали NOW(3) , последние три цифры во фракции равны 0.

Храните метку времени Javascript в столбце TIMESTAMP

Если у вас есть значение временной метки Javascript, например 1478960868932 , вы можете преобразовать это значение в значение дробного времени MySQL следующим образом:

FROM_UNIXTIME(1478960868932 * 0.001)

Это простое выражение для хранения вашей метки времени Javascript в таблице MySQL. Сделай это:

INSERT INTO table (col) VALUES (FROM_UNIXTIME(1478960868932 * 0.001))

(Очевидно, вы захотите вставить другие столбцы.)



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow