ruby-on-rails - rails - ruby timestamp to date




Worin besteht in Ruby on Rails der Unterschied zwischen DateTime, Timestamp, Time und Date? (2)

Nach meiner Erfahrung ist es immer voller Gefahren und Schwierigkeiten, die richtigen Daten zu erhalten.

Ruby und Rails haben mich immer wieder ausgeschlossen, wenn auch nur wegen der überwältigenden Anzahl von Optionen. Ich habe nie eine Idee, welche ich wählen sollte.

Wenn ich Rails benutze und ActiveRecord-Datentypen betrachte, kann ich folgendes finden

: datetime,: Zeitstempel,: time und: date

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

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

(PS Ich benutze Rails3)


  1. : datetime (8 Bytes)

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

    • Speichert die Anzahl der Sekunden seit 1970-01-01
    • Nützlich für Spalten wie update_at, created_at
  3. : Datum (3 Bytes)
    • Speichert das Datum
  4. : Zeit (3 Bytes)
    • Speichert Zeit

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

Am Beispiel von MySQL (wenn es aus anderen Gründen am populärsten ist) haben Sie Spalten Datentypen DATE , DATETIME , TIME und TIMESTAMP ; So wie Sie CHAR , VARCHAR , FLOAT und INTEGER .

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 beides speichert.

Der Unterschied zwischen DATETIME und TIMESTAMP ist etwas subtiler: DATETIME wird als YYYY-MM-DD HH:MM:SS formatiert. Gültige Bereiche reichen vom Jahr 1000 bis zum Jahr 9999 (und alles dazwischen. Während TIMESTAMP ähnlich aussieht, wenn Sie es aus der Datenbank holen, ist es nur ein Frontal für einen Unix-Zeitstempel . Sein gültiger Bereich reicht von 1970 bis 2038 Der Unterschied zu den verschiedenen integrierten Funktionen innerhalb der Datenbank-Engine ist der Speicherplatz, da DATETIME jede Ziffer im Jahr, Monat, Tag, Stunde, Minute und Sekunde speichert und insgesamt 8 Bytes TIMESTAMP nur TIMESTAMP speichert die Anzahl der Sekunden seit 1970-01-01, es verwendet 4 Bytes.

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

Am Ende kommt es darauf an, was Sie für Ihre Datums- / Zeitspalte benötigen. Müssen Sie Daten und Zeiten vor 1970 oder nach 2038 speichern? Verwenden Sie DATETIME . Müssen Sie sich über die Größe der Datenbank Gedanken machen und Sie befinden sich in diesem Zeitraum? Verwenden Sie TIMESTAMP . Müssen Sie nur ein Datum speichern? Verwenden Sie DATE . Müssen Sie nur eine Zeit speichern? Benutze TIME .

Nachdem all dies gesagt wurde, trifft Rails tatsächlich einige dieser Entscheidungen für Sie . Beide :timestamp und :datetime wird standardmäßig auf DATETIME , während :date und :time DATE und TIME entsprechen.

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





timestamp