La différence entre les différents formats de date / heure dans ActiveRecord a peu à voir avec Rails et tout à voir avec la base de données que vous utilisez.
En utilisant MySQL comme un exemple (si pour aucune autre raison parce qu'il est le plus populaire), vous avez DATE, DATETIME, TIMEet les TIMESTAMPtypes de données de colonne; comme vous l' avez CHAR, VARCHAR, FLOATet INTEGER.
Alors, demandez-vous, quelle est la différence? Eh bien, certains d'entre eux sont explicites. DATEstocke uniquement une date, TIMEstocke uniquement une heure de la journée, tandis que DATETIMEstocke les deux.
La différence entre DATETIMEet TIMESTAMPest un peu plus subtile: DATETIMEest formatée en YYYY-MM-DD HH:MM:SS. Les plages valides vont de l'année 1000 à l'année 9999 (et tout le reste. Bien que cela TIMESTAMP semble similaire lorsque vous le récupérez dans la base de données, c'est vraiment juste un front pour un horodatage Unix . Sa plage valide va de 1970 à 2038. La différence ici, en plus des diverses fonctions intégrées dans le moteur de base de données, est l'espace de stockage. Parce qu'il DATETIMEstocke chaque chiffre de l'année, du mois, de l'heure, des minutes et des secondes, il utilise un total de 8 octets. Comme TIMESTAMPne stocke que le nombre de secondes depuis le 01/01/1970, il utilise 4 octets.
Vous pouvez en savoir plus sur les différences entre les formats d'heure dans MySQL ici .
En fin de compte, cela revient à ce que vous avez besoin de votre colonne date / heure. Avez-vous besoin de stocker des dates et heures avant 1970 ou après 2038? Utilisez DATETIME. Avez-vous besoin de vous soucier de la taille de la base de données et vous êtes dans cette plage horaire? Utilisez TIMESTAMP. Avez-vous seulement besoin de stocker une date? Utilisez DATE. Avez-vous seulement besoin de stocker un temps? Utilisez TIME.
Cela dit, Rails prend en fait certaines de ces décisions pour vous . Les deux :timestampet :datetimeseront par défaut DATETIME, tandis que :dateet :timecorrespond à DATEet TIME, respectivement.
Cela signifie qu'au sein de Rails, vous n'avez qu'à décider si vous devez stocker la date, l'heure ou les deux.