MySQL
Zeit mit Sekundengenauigkeit
Suche…
Bemerkungen
Sie müssen auf MySQL Version 5.6.4 oder höher sein, um Spalten mit Sekundenbruchzeitdatentypen zu deklarieren.
Mit DATETIME(3)
Sie beispielsweise eine Millisekundenauflösung in Ihren Zeitstempeln, und TIMESTAMP(6)
eine Mikrosekundenauflösung mit einem * nix-artigen Zeitstempel.
Lesen Sie dies: http://dev.mysql.com/doc/refman/5.7/de/fractional-seconds.html
NOW(3)
gibt Ihnen die aktuelle Uhrzeit des Betriebssystems Ihres MySQL-Servers in Millisekunden-Genauigkeit.
(Beachten Sie, dass die interne fraktale Arithmetik von MySQL wie * 0,001 immer als Gleitpunkt mit doppelter Genauigkeit nach IEEE754 behandelt wird. Es ist daher unwahrscheinlich, dass Sie an Präzision verlieren, bevor die Sonne zum weißen Zwergstern wird.)
Holen Sie sich die aktuelle Uhrzeit in Millisekundengenauigkeit
SELECT NOW(3)
macht den Trick
Holen Sie sich die aktuelle Uhrzeit in einem Formular, das wie ein Javascript-Zeitstempel aussieht.
Javascript Zeitstempel werden auf der Grundlage der ehrwürdige UNIX time_t
Datentyp und zeigen die Anzahl der Millisekunden seit 1970-01-01 00:00:00
UTC.
Dieser Ausdruck ruft die aktuelle Uhrzeit als JavaScript-Zeitstempel-Ganzzahl ab. (Dies ist unabhängig von der aktuellen Einstellung von time_zone korrekt.)
ROUND(UNIX_TIMESTAMP(NOW(3)) * 1000.0, 0)
Wenn Sie in einer Spalte TIMESTAMP
Werte gespeichert haben, können Sie diese mit der Funktion UNIX_TIMESTAMP () als ganzzahlige Javascript-Zeitstempel abrufen.
SELECT ROUND(UNIX_TIMESTAMP(column) * 1000.0, 0)
Wenn Ihre Spalte DATETIME
Spalten enthält und Sie diese als Javascript-Zeitstempel abrufen, werden diese Zeitstempel um den Zeitzonenversatz der Zeitzone versetzt, in der sie gespeichert sind.
Erstellen Sie eine Tabelle mit Spalten, um die zweite Sekunde zu speichern.
CREATE TABLE times (
dt DATETIME(3),
ts TIMESTAMP(3)
);
erstellt eine Tabelle mit Millisekunden-genauen Datums- / Uhrzeitfeldern.
INSERT INTO times VALUES (NOW(3), NOW(3));
fügt eine Zeile mit NOW()
Werten mit einer Millisekundengenauigkeit in die Tabelle ein.
INSERT INTO times VALUES ('2015-01-01 16:34:00.123','2015-01-01 16:34:00.128');
fügt spezifische Millisekunden-Präzisionswerte ein.
Beachten Sie, dass Sie NOW(3)
anstelle von NOW()
wenn Sie diese Funktion verwenden, um hochgenaue Zeitwerte einzufügen.
Konvertieren Sie einen Datums- / Zeitwert in Millisekundengenauigkeit in Text.
%f
ist der Formatbezeichner für gebrochene Genauigkeit für die Funktion DATE_FORMAT () .
SELECT DATE_FORMAT(NOW(3), '%Y-%m-%d %H:%i:%s.%f')
zeigt einen Wert wie 2016-11-19 09:52:53.248000
mit gebrochenen Mikrosekunden an. Da wir NOW(3)
, sind die letzten drei Ziffern im Bruchteil 0.
Speichern Sie einen Javascript-Zeitstempel in einer TIMESTAMP-Spalte
Wenn Sie einen Javascript-Zeitstempelwert haben, zum Beispiel 1478960868932
, können Sie diesen Wert in einen MySQL-Bruchzeitwert wie 1478960868932
konvertieren:
FROM_UNIXTIME(1478960868932 * 0.001)
Es ist einfach, diese Art von Ausdruck zu verwenden, um Ihren Javascript-Zeitstempel in einer MySQL-Tabelle zu speichern. Mach das:
INSERT INTO table (col) VALUES (FROM_UNIXTIME(1478960868932 * 0.001))
(Natürlich möchten Sie andere Spalten einfügen.)