Zeitstempel mit einer Millisekunde Genauigkeit: Wie Sie sie in MySQL speichern
Habe ich zum entwickeln einer Anwendung mit MySQL, und ich habe um die Werte zu speichern, wie "1412792828893", welche eine timestamp-aber mit einer Genauigkeit von einer Millisekunde. Das heißt, die Menge der Millisekunden seit dem 1.1.1970 gewertet. Ich erkläre die Zeile als timestamp
aber leider nicht funktionierte. Alle Werte eingestellt sind 0000-00-00 00:00:00
CREATE TABLE IF NOT EXISTS `probability` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`segment_id` int(11) NOT NULL,
`probability` float NOT NULL,
`measured_at` timestamp NOT NULL,
`provider_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ;
Wie sollte die Deklaration, um speichern zu können, timestamp-Werte mit dieser Präzision?
InformationsquelleAutor der Frage Luixv | 2014-10-10
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie in MySQL-version 5.6.4 oder höher deklarieren Sie Spalten mit fractional-zweite Uhrzeit-Datentypen. Nicht sicher, dass Sie die richtige version? Versuchen
SELECT NOW(3)
. Wenn Sie eine Fehlermeldung erhalten, haben Sie nicht die richtige version.Beispielsweise
DATETIME(3)
geben Sie millisekundenauflösung in Ihrem Zeitstempel undTIMESTAMP(6)
wird Ihnen Mikrosekunden-Auflösung auf einem *nix-Stil timestamp.Lesen: http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html
NOW(3)
geben Sie die gegenwärtige Zeit aus Ihrem MySQL-server-Betriebssystem mit Millisekunden-Präzision.Wenn Sie eine Anzahl von Millisekunden, die seit dem Unix-Epocheversuchen Sie dies, um ein DATETIME - (3) - Wert
Javascript Zeitstempelzum Beispiel, dargestellt in Millisekunden, die seit dem Unix-Epoche.
(Beachten Sie, dass die MySQL-internen Bruch rechnen, wie
* 0.001
ist immer so behandelt, als IEEE754-double-precision-floating-point -, so ist es unwahrscheinlich, dass Sie verlieren Präzision, bevor die Sonne wird zu einem weißen Zwergstern.)Wenn Sie eine ältere MySQL-version und Sie müssen subsecond time Präzision, Ihren besten Weg ist, zu aktualisieren. Alles andere wird Sie zwingen, das zu tun, chaotisch workarounds.
Wenn aus irgendeinem Grund Sie nicht aktualisieren, Sie könnten mit
BIGINT
oderDOUBLE
Spalten zu speichern, Javascript Zeitstempel, als würden Sie zahlen.FROM_UNIXTIME(col * 0.001)
wird immer noch funktionieren OK. Wenn Sie die aktuelle Zeit zu speichern, in eine solche Spalte, die Sie nutzen könntenUNIX_TIMESTAMP() * 1000
InformationsquelleAutor der Antwort O. Jones