Nur eine kurze Frage zum Speichern von "Zeit" in einer Datenbank. Ich protokolliere die Zeit von Benutzerläufen im Format 00: 00: 00: 00 (Stunden, Minuten, Sekunden, Millisekunden).
Ich wollte es ursprünglich so speichern, TIME
aber dann wurde mir klar, dass MySQL Millisekunden in diesem Typ nicht unterstützt.
Ich werde die tatsächliche Zeit speichern, die von der Stoppuhr des Benutzers benötigt wird, nicht die Zeit, zu der sie ausgeführt und beendet wurden (dies wird vor dem Einfügen berechnet).
Was wäre der beste Feldtyp? Ich dachte entweder double
oder float
, aber ich bin nicht sicher, ob das funktionieren würde?
quelle
interval
diesem Zweck gibt es einen Standard-SQL- Datentyp. Aber nicht alle DBMS (und definitiv nicht MySQL) unterstützen dies.Es hängt davon ab, wie lange Sie messen möchten. Wenn Sie nicht länger als 2 ^ 32 oder 4294967296 ms aufnehmen, ist ein reguläres int ohne Vorzeichen in Ordnung. Das entspricht übrigens ungefähr 50 Tagen Uhrzeit.
Wenn Sie Unix-Zeitstempel oder größere Intervalle gespeichert haben, sollten Sie Bigint verwenden. Dies gibt Ihnen 8 Byte Speicherplatz oder die Möglichkeit, Zeiten mit einer Länge von 1,84467440737096e + 19 ms (was ungefähr 500 Millionen Jahren entspricht) aufzuzeichnen.
quelle
Wenn Sie MySQL 5.6.4 oder höher können Sie die verwenden
TIME(3)
,DATETIME(3)
undTIMESTAMP(3)
Spaltentypen bis 6 Nachkommastellen zu speichern (ersetzen3
mit der Anzahl der Nachkommastellen müssen Sie). Ein Bruchteil wird nach dem Punkt zur Zeitzeichenfolge hinzugefügt. Beispiel :2018-09-08 17:51:04.781
.Offizielle Referenz
quelle