В Ruby on Rails, в чем разница между DateTime, Timestamp, Time и Date?
по моему опыту, получение даты / времени правильно, когда программирование всегда чревато опасностью и трудностью.
Ruby и Rails всегда ускользали от меня на этом, хотя бы из-за подавляющего числа вариантов; я никогда не знаю, что я должен выбрать.
когда я использую Rails и смотрю на типы данных ActiveRecord, я могу найти следующее
:датавремя, :отметки времени :время и дата
и понятия не имею, что различия есть или где готы скрываются.
какая разница? Для чего вы их используете?
(П. С. Я использую Rails3)
2 ответов:
разница между различными форматами даты/времени в ActiveRecord имеет мало общего с Rails и все, что связано с любой базой данных, которую вы используете.
используя MySQL в качестве примера (если ни по какой другой причине, потому что он самый популярный), у вас есть
DATE,DATETIME,TIMEиTIMESTAMPтипы данных столбцов, как у васCHAR,VARCHAR,FLOATиINTEGER.Итак, вы спрашиваете, в чем разница? Ну, некоторые из них не требуют пояснений.
DATEтолько хранит дату,TIMEтолько сохраняет время суток, в то время какDATETIMEсохранить.разницу между
DATETIMEиTIMESTAMPтак:DATETIMEимеет следующий формат:YYYY-MM-DD HH:MM:SS. Допустимые диапазоны идут от года 1000 до года 9999 (и все между ними. В то время какTIMESTAMPвыглядит аналогично, когда вы извлекаете его из базы данных, это действительно просто фронт для unix timestamp. Свой действительный ряд идет от 1970 до 2038. Разница здесь, помимо различных встроенных функций в ядре базы данных, это пространство для хранения. Потому чтоDATETIMEхранит каждую цифру в год, месяц день, час, минуту и секунду, он использует в общей сложности 8 байт. КакTIMESTAMPтолько хранит количество секунд, прошедших с 1970-01-01, он использует 4 байта.вы можете узнать больше о различиях между форматами времени в MySQL здесь.
в конце концов, это сводится к тому, что вам нужна ваша столбца даты/времени. Вы нужно хранить даты и время до 1970 года или после 2038? Используйте
DATETIME. Вам нужно беспокоиться о размере базы данных, и вы находитесь в пределах этого временного диапазона? ИспользуйтеTIMESTAMP. Вам нужно только сохранить дату? ИспользуйтеDATE. Вам нужно только сохранить время? ИспользуйтеTIME.сказав Все это, Rails на самом деле делает некоторые из этих решений для вас. Оба
:timestampи:datetimeпо умолчаниюDATETIME, в то время как:dateи:timeсоответствуетDATEиTIME, соответственно.это означает, что в Rails вам нужно только решить, нужно ли хранить дату, время или и то, и другое.
: datetime (8 байт)
- сохраняет дату и время в формате гггг-ММ-ДД чч: мм: СС
- полезно для столбцов, таких как birth_date
: метка времени (4 байта)
- хранит количество секунд с 1970-01-01
- полезно для столбцов, таких как updated_at, created_at
- :дата (3 байта)
- Магазины Дата
- :времени (3 байты)
- Магазины Времени
Comments