Sök…


Anmärkningar

Du måste vara på MySQL version 5.6.4 eller senare för att deklarera kolumner med datatyper med fraktionerad sekund.

Till exempel ger DATETIME(3) dig millisekundupplösning i dina tidsstämplar, och TIMESTAMP(6) ger dig mikrosekundupplösning på en * nix-tidsstämpel.

Läs detta: http://dev.mysql.com/doc/refman/5.7/sv/factional-seconds.html

NOW(3) kommer att ge dig den aktuella tiden från din MySQL-servers operativsystem med millisekund precision.

(Lägg märke till att MySQL interna fraktionerade aritmetik, som * 0,001, alltid hanteras som IEEE754 dubbel precision flytande punkt, så det är osannolikt att du kommer att förlora precision innan solen blir en vit dvärgstjärna.)

Få den aktuella tiden med millisekunds precision

SELECT NOW(3)

gör tricket.

Få den aktuella tiden i en form som ser ut som en Javascript-tidsstämpel.

Javascript-tidsstämplar är baserade på den värdefulla UNIX time_t och visar antalet millisekunder sedan 1970-01-01 00:00:00 UTC.

Detta uttryck får aktuell tid som ett heltal för Javascript-tidsstämpel. (Det gör det korrekt oavsett den aktuella inställningen för tidszon.)

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

Om du har TIMESTAMP värden lagrade i en kolumn kan du hämta dem som heltal Javascript-tidsstämplar med funktionen UNIX_TIMESTAMP ().

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

Om din kolumn innehåller DATETIME kolumner och du hämtar dem som Javascript-tidsstämplar kommer dessa tidsstämplingar att kompenseras av tidszonen förskjutning av den tidszon som de lagras i.

Skapa en tabell med kolumner för att lagra under andra gången.

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

skapar ett bord med millisekund-datum / tidfält.

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

sätter in en rad som innehåller NOW() -värden med millisekunds precision i tabellen.

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

sätter in specifika millisekunds precisionsvärden.

Lägg märke till att du måste använda NOW(3) snarare än NOW() om du använder den funktionen för att införa högprecisions tidsvärden.

Konvertera ett datum / tidsvärde på millisekund-precision till text.

%f är det fraktionerade precisionsformat som specificeras för funktionen DATE_FORMAT () .

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

visar ett värde som 2016-11-19 09:52:53.248000 med fraktionerade mikrosekunder. Eftersom vi använde NOW(3) är de tre sista siffrorna i fraktionen 0.

Lagra en Javascript-tidsstämpel i en TIMESTAMP-kolumn

Om du har ett Javascript-tidsstämpelvärde, till exempel 1478960868932 , kan du konvertera det till ett MySQL-fraktionstidsvärde som detta:

FROM_UNIXTIME(1478960868932 * 0.001)

Det är enkelt att använda den typen av uttryck för att lagra din Javascript-tidsstämpel i en MySQL-tabell. Gör det här:

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

(Naturligtvis vill du infoga andra kolumner.)



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow