2016-05-04 2 views
0

Ich frage mich nur, wie ich Datum und Uhrzeit in einer Datenbank speichern soll? Da sie zusammen in einer DATETIME-Spalte gespeichert werden, werden 8 Bytes pro Datensatz benötigt, und das separate Speichern in zwei Spalten DATE und TIME wird jeweils 3 Byte dauern - das sind insgesamt 6 Byte pro Datensatz. Ich weiß, es ist nicht viel in Bezug auf kleine bis mittlere Datenbank, aber es schadet auch nicht, wenn jemand politisch korrekt sein will. Ist das überhaupt richtig? :) Oder gibt es noch etwas anderes zu beachten, bevor Sie datetime in zwei Spalten aufteilen?MySQL-Datentypen - Speichern von DATE-Typ und TIME-Typ getrennt speichert mich 2bytes pro Datensatz auf DATETIME-Eintrag zu erweitern?

Storage Requirements for Date and Time Types

Auch wenn ich am Tisch siehe oben ich wahrscheinlich bei TIMESTAMP- gehen würde, weil ich dauert nur 4 Bytes, aber zu wissen, dass der Datentyp TIMESTAMP eine Reihe von ‚1970-01-01 00 hat: 00:01 'UTC to' 2038-01-19 03:14:07 'UTC Ich bin mir nicht ganz sicher. Ist das eine gute Idee auf lange Sicht? Ich bin nicht so alt, also werde ich im Jahr 2038 noch da sein und es lässt mich nur fragen, was in '2038-01-19 03: 14: 0 ' ... wird Ich muss DATUM und ZEIT Daten erstellen Typen Spalten sowieso? :)

+1

Es könnte Ihnen ein wenig Platz sparen, aber ich würde schätzen, es kostet Sie viel mehr in der Zeit Ringen mit den beiden Feldern als die 2MB pro Million Aufzeichnungen der Lagerung wert ist. (Beispiel: Denken Sie nur an die Bedingungen, die für das Auffinden von Datensätzen zwischen "gestern mittags" und "heute mittags" erforderlich sind, und beachten Sie, dass die Verwendung einer Funktion für die Feldwerte die Vorteile von Indizes für diese Felder UND eliminiert verlangsamen Sie es, indem Sie die Operationen für diese Felder für jede Zeile in der Tabelle ausführen.) – Uueerdo

+0

Sie sind prabobly richtig darüber. Ich müsste eine komplexere Abfrage machen, um Daten zu vergleichen. Was ist mit TIMESTAMP? Ist es eine Alternative zu DATETIME? (mindestens bis 2038 :)) – DevWL

+0

TIMESTAMP hängt wirklich von Ihrer Verwendung ab; Es wird natürlich nicht sehr zuverlässig für Geburt/Bau/Gründung/etc Daten sein, es sei denn, Sie beschränken die Personen/Gebäude/Organisationen/etc nur auf die unter 46. Ich glaube, dass es zwischen den Typen einige leichte Verhaltensunterschiede gibt Es kommt zu Zeitzonen und gültigen Standardwerten (abhängig von der MySQL-Version).Ich denke, dass Sie sich über die Größe Ihrer Datumsfelder Gedanken machen müssen, ist immer noch eines der letzten Dinge, die Sie in Betracht ziehen sollten, wenn Ihre beste Fallersparnis 4MB pro Million Felder beträgt (es sei denn, Ihre Anwendung ist ungewöhnlich schwer). – Uueerdo

Antwort

0

In Bezug auf die Tabelle. Ich denke das ist für MySQL. Diese Tabelle wird jetzt für die Versionen nach Version 5.6.4 aktualisiert: Date/Time and Date time storage comparisons for MySQL. Wo jetzt ist es bequemer, es als datetime zu speichern.

Date = 3bytes
Time = 3bytes
Timestamp = 5 Byte

Hier können Sie an einem Tisch für PostgresSQL aussehen: Date/Time and Date time storage comparisons for Postgres Wo Sie mehr Bytes als timestamp Speichern speichern.

Date = 4bytes
Time = 8bytes
Timestamp = 8 Bytes

Auf diesem Link Sie auch den SQL Server-Vergleich finden: Date/Time and Datetime comparisons for SQL Server Wo es fast gleich ist.

Date = 4bytes
Time = 3 bis 5bytes
Timestamp = 8bytes

Ich würde ja auf Ihre Frage beantworten. Meine zwei Cent bei der Umsetzung ist, dass es darauf ankommt, wie Sie Daten abfragen würden.