it-swarm.com.de

Was ist in Ruby on Rails der Unterschied zwischen DateTime, Timestamp, Time und Date?

Meiner Erfahrung nach ist es immer gefährlich und schwierig, die richtigen Daten und Zeiten für die Programmierung festzulegen.

Ruby und Rails haben mich in diesem Fall schon immer umgangen, schon allein aufgrund der überwältigenden Anzahl von Optionen; ich habe nie eine Idee, welche ich auswählen sollte.

Wenn ich Rails und ActiveRecord-Datentypen betrachte, kann ich Folgendes finden

: datetime,: timestamp,: time und: date

und habe keine Ahnung, was die Unterschiede sind oder wo die Fallstricke lauern.

Was ist der Unterschied? Wofür benutzt du sie?

(S. Ich benutze Rails3)

397
Nick May

Der Unterschied zwischen verschiedenen Datums- und Uhrzeitformaten in ActiveRecord hat wenig mit Rails und allem zu tun, was mit der von Ihnen verwendeten Datenbank zu tun hat.

Verwenden Sie MySQL als Beispiel (falls dies aus keinem anderen Grund am beliebtesten ist), haben Sie die Datentypen DATE, DATETIME, TIME und TIMESTAMP; Genau wie Sie CHAR, VARCHAR, FLOAT und INTEGER haben.

Also, fragst du, was ist der Unterschied? Nun, einige von ihnen sind selbsterklärend. DATE speichert nur ein Datum, TIME speichert nur eine Uhrzeit, während DATETIME beide speichert.

Der Unterschied zwischen DATETIME und TIMESTAMP ist etwas subtiler: DATETIME ist formatiert als YYYY-MM-DD HH:MM:SS. Gültige Bereiche reichen vom Jahr 1000 bis zum Jahr 9999 (und alles dazwischen). Während TIMESTAMP sieht aus ähnlich ist, wenn Sie es aus der Datenbank abrufen, ist es wirklich nur eine Front für a nix-Zeitstempel . Der gültige Bereich reicht von 1970 bis 2038. Der Unterschied besteht hier, abgesehen von den verschiedenen integrierten Funktionen in der Datenbank-Engine, im Speicherplatz. Da DATETIME jede Ziffer in Jahr, Monat, Tag, Stunde, Minute und Sekunde speichert, werden insgesamt 8 Byte belegt. Da TIMESTAMP nur die Anzahl der Sekunden seit dem 01.01.1970 speichert, werden 4 Bytes verwendet.

Sie können mehr über die Unterschiede zwischen den Zeitformaten in MySQL lesen hier .

Am Ende kommt es darauf an, was Sie in Ihrer Datums-/Zeitspalte tun müssen. Müssen Sie Daten und Zeiten vor 1970 oder nach 2038 speichern? Verwenden Sie DATETIME. Müssen Sie sich Gedanken über die Größe der Datenbank machen und sind Sie innerhalb dieses Zeitbereichs? Verwenden Sie TIMESTAMP. Müssen Sie nur ein Datum speichern? Verwenden Sie DATE. Müssen Sie nur eine Zeit speichern? Verwenden Sie TIME.

Trotzdem trifft Rails einige dieser Entscheidungen für Sie . Beide :timestamp und :datetime wird standardmäßig auf DATETIME gesetzt, während :date und :time entspricht DATE bzw. TIME.

Dies bedeutet, dass Sie innerhalb von Rails nur entscheiden müssen, ob Sie Datum, Uhrzeit oder beides speichern möchten.

549
vonconrad
  1. : datetime (8 Bytes)

    • Speichert Datum und Uhrzeit im Format JJJJ-MM-TT HH: MM: SS
    • Nützlich für Spalten wie birth_date
  2. : Zeitstempel (4 Bytes)

    • Speichert die Anzahl der Sekunden seit dem 01.01.1970
    • Nützlich für Spalten wie updated_at, created_at
  3. : Datum (3 Bytes)
    • Speichert das Datum
  4. : Zeit (3 Bytes)
    • Speichert die Zeit
12
mingca