Szukaj…


Uwagi

Musisz być w MySQL w wersji 5.6.4 lub nowszej, aby zadeklarować kolumny z typami danych ułamkowych sekund.

Na przykład DATETIME(3) da ci milisekundową rozdzielczość w twoich znacznikach czasu, a TIMESTAMP(6) da ci mikrosekundową rozdzielczość na * znaczniku czasu w stylu nix.

Przeczytaj to: http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html

NOW(3) da ci bieżący czas z systemu operacyjnego twojego serwera MySQL z milisekundową precyzją.

(Zauważ, że wewnętrzna arytmetyka ułamkowa MySQL, taka jak * 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ę białą karłem.)

Uzyskaj aktualny czas z milisekundową precyzją

SELECT NOW(3)

Zrób sztuczkę.

Uzyskaj aktualny czas w formie przypominającej znacznik czasu Javascript.

Znaczniki czasu JavaScript są oparte na czcigodnym typie danych time_t i pokazują liczbę milisekund od 1970-01-01 00:00:00 UTC.

To wyrażenie pobiera bieżącą godzinę jako liczbę całkowitą znacznika czasu Javascript. (Robi to poprawnie bez względu na bieżące ustawienie strefy czasowej.)

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

Jeśli masz wartości TIMESTAMP przechowywane w kolumnie, możesz je odzyskać jako całkowite znaczniki czasu Javascript za pomocą funkcji UNIX_TIMESTAMP ().

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

Jeśli kolumna zawiera kolumny DATETIME i pobierzesz je jako znaczniki czasu Javascript, te znaczniki czasu zostaną przesunięte o przesunięcie strefy czasowej strefy czasowej, w której są przechowywane.

Utwórz tabelę z kolumnami do przechowywania w sekundach.

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

tworzy tabelę z polami daty / godziny z dokładnością do milisekund.

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

wstawia do tabeli wiersz zawierający wartości NOW() z dokładnością do milisekund.

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

wstawia określone wartości precyzji milisekundowej.

Zauważ , że musisz użyć NOW(3) zamiast NOW() jeśli używasz tej funkcji do wstawiania precyzyjnych wartości czasu.

Konwertuj wartość daty / godziny z dokładnością do milisekundy na tekst.

%f jest specyfikatorem formatu ułamkowej precyzji dla funkcji DATE_FORMAT () .

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

wyświetla wartość jak 2016-11-19 09:52:53.248000 z ułamkowymi mikrosekundami. Ponieważ użyliśmy NOW(3) , ostatnie trzy cyfry ułamka to 0.

Przechowuj znacznik czasu Javascript w kolumnie TIMESTAMP

Jeśli masz wartość znacznika czasu JavaScript, na przykład 1478960868932 , możesz przekonwertować ją na wartość ułamkową czasu MySQL, jak poniżej:

FROM_UNIXTIME(1478960868932 * 0.001)

Użycie tego rodzaju wyrażenia jest proste do przechowywania znacznika czasowego Javascript w tabeli MySQL. Zrób to:

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

(Oczywiście, będziesz chciał wstawić inne kolumny).



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow