402 votes

En Ruby on Rails, ce qui ' la différence entre DateTime, Timestamp, heure et Date ?

Dans mon expérience, obtenir des dates/horaires de droit lorsque la programmation est toujours pleine de danger et difficulity.

Ruby et Rails ont toujours échappé moi sur ce point, si seulement en raison de l'immense nombre d'options; jamais je n'ai aucune idée de qui je devrais choisir.

Quand je suis à l'aide de Rails et de regarder ActiveRecord les types de données que je peux trouver la suite

:datetime :horodatage, :temps,: date

et n'avez aucune idée de quelles sont les différences ou où les pièges se cachent.

Quelle est la différence? Que voulez-vous utiliser? Veuillez informer. Merci!

(P. S. je suis en utilisant Rails3)

559voto

vonconrad Points 14378

La différence entre les différents formats de date/heure dans ActiveRecord ont peu à voir avec les Rails et tout à voir avec la base de données que vous utilisez.

En utilisant MySQL comme un exemple (si pour aucune autre raison, car c'est le plus populaire), vous avez DATE, DATETIME, TIME et TIMESTAMP types de données des colonnes; tout comme vous avez CHAR, VARCHAR, FLOAT et INTEGER.

Donc, vous demandez-vous, quelle est la différence? Eh bien, certains d'entre eux sont auto-explicatif. DATE seulement des magasins un jour, TIME seulement des magasins une heure de la journée, tout en DATETIME magasins à la fois.

La différence entre DATETIME et TIMESTAMP est un peu plus subtil: DATETIME est formaté en tant qu' YYYY-MM-DD HH:MM:SS. Plages valides vont de l'an 1000 à l'an 9999 (et tout entre les deux. Alors qu' TIMESTAMP semble similaire lorsque vous chercher à partir de la base de données, il est vraiment juste une façade pour un timestamp unix. Sa gamme va de 1970 à 2038. La différence ici, mis à part les différents fonctions intégrées dans le moteur de base de données, est un espace de stockage. Parce qu' DATETIME magasins de chaque chiffre dans l'année, mois, jour, heure, minute et seconde, il utilise un total de 8 octets. En tant que TIMESTAMP seulement des magasins le nombre de secondes depuis le 1970-01-01, il utilise 4 octets.

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

En fin de compte, c'est ce que vous avez besoin de votre colonne date/heure pour le faire. Avez-vous besoin pour stocker des dates et des heures avant 1970 ou après 2038? Utiliser DATETIME. Avez-vous besoin de vous inquiéter de la taille de base de données et vous êtes à l'intérieur de cette timerange? Utiliser TIMESTAMP. Avez-vous seulement besoin de stocker une date? Utiliser DATE. Avez-vous seulement besoin de stocker une fois? Utiliser TIME.

Ayant dit tout cela, Rails vraiment fait de certaines de ces décisions pour vous. Les deux :timestamp et :datetime par défaut est DATETIME, tandis que l' :date et :time correspond DATE et TIME, respectivement.

Cela signifie que dans les Rails, vous n'avez qu'à décider si vous avez besoin de stocker la date, l'heure ou les deux.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X