Dans Ruby on Rails, quelle est la différence entre DateTime, Timestamp, Time et Date?

D’après mon expérience, il est toujours dangereux et difficile d’obtenir des dates et des heures précises lors de la programmation.

Ruby et Rails m’ont toujours échappé sur ce coup, ne serait-ce qu’en raison du nombre écrasant d’options. Je n’ai jamais aucune idée que je devrais choisir.

Lorsque j’utilise Rails et que je regarde les types de données ActiveRecord, je peux trouver les éléments suivants:

: datetime,: timestamp,: time et: date

et n’ont aucune idée de ce que sont les différences ou où les pièges se cachent.

Quelle est la différence? A quoi les utilisez-vous?

(PS j’utilise Rails3)

La différence entre les différents formats de date / heure dans ActiveRecord a peu à voir avec Rails et tout ce qui concerne la firebase database que vous utilisez.

En utilisant MySQL comme exemple (si ce n’est pas parce qu’il est le plus populaire), vous avez les types de données de colonne DATE , DATETIME , TIME et TIMESTAMP ; tout comme vous avez CHAR , VARCHAR , FLOAT et INTEGER .

Alors, vous demandez, quelle est la différence? Eh bien, certains d’entre eux sont explicites. DATE stocke uniquement une date, TIME stocke uniquement une heure du jour, tandis que DATETIME enregistre les deux.

La différence entre DATETIME et TIMESTAMP est un peu plus subtile: DATETIME est formaté en YYYY-MM-DD HH:MM:SS . Les plages valides vont de l’an 1000 à l’année 9999 (et tout entre les deux. Même si TIMESTAMP est similaire lorsque vous le récupérez depuis la firebase database, il s’agit d’un simple timestamp Unix . Sa plage valide va de 1970 à 2038). La différence ici, hormis les diverses fonctions intégrées au moteur de firebase database, réside dans l’espace de stockage, car DATETIME stocke chaque chiffre de l’année, du mois, de l’heure, des minutes et des secondes. stocke le nombre de secondes depuis le 1970-01-01, il utilise 4 octets.

Vous pouvez en savoir plus sur les différences entre les formats de temps dans MySQL ici .

En fin de compte, cela se résume à ce que vous avez besoin de votre colonne date / heure. Avez-vous besoin de stocker des dates et des heures avant 1970 ou après 2038? Utilisez DATETIME . Avez-vous besoin de vous soucier de la taille de la firebase database et vous êtes dans cette horloge? Utilisez TIMESTAMP . Avez-vous seulement besoin de stocker une date? Utilisez DATE . Avez-vous seulement besoin de stocker une heure? Utilisez le TIME .

Après avoir dit tout cela, Rails prend certaines de ces décisions pour vous . Les deux :timestamp et :datetime par défaut à DATETIME , tandis que :date et :time correspondent respectivement à DATE et TIME .

Cela signifie que dans Rails, il vous suffit de décider si vous devez stocker la date, l’heure ou les deux.

  1. : datetime (8 octets)

    • Stocke la date et l’heure au format AAAA-MM-JJ HH: MM: SS
    • Utile pour les colonnes comme birth_date
  2. : horodatage (4 octets)

    • Stocke le nombre de secondes depuis le 1970-01-01
    • Utile pour les colonnes comme updated_at, created_at
  3. : date (3 octets)
    • Date de magasins
  4. : heure (3 octets)
    • Magasin Temps