В Ruby on Rails, в чем разница между DateTime, Timestamp, Time и Date?



по моему опыту, получение даты / времени правильно, когда программирование всегда чревато опасностью и трудностью.



Ruby и Rails всегда ускользали от меня на этом, хотя бы из-за подавляющего числа вариантов; я никогда не знаю, что я должен выбрать.



когда я использую Rails и смотрю на типы данных ActiveRecord, я могу найти следующее




:датавремя, :отметки времени :время и дата




и понятия не имею, что различия есть или где готы скрываются.



какая разница? Для чего вы их используете?



(П. С. Я использую Rails3)

775   2  

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 вам нужно только решить, нужно ли хранить дату, время или и то, и другое.

  1. : datetime (8 байт)

    • сохраняет дату и время в формате гггг-ММ-ДД чч: мм: СС
    • полезно для столбцов, таких как birth_date
  2. : метка времени (4 байта)

    • хранит количество секунд с 1970-01-01
    • полезно для столбцов, таких как updated_at, created_at
  3. :дата (3 байта)
    • Магазины Дата
  4. :времени (3 байты)
    • Магазины Времени

Comments

    Ничего не найдено.