Какой правильный тип я должен использовать, чтобы сохранить дату до минуты? - PullRequest
1 голос
/ 21 мая 2011

Я хочу сохранить дату события в моей базе данных, но я хочу сделать это без сохранения информации о секундах или чем-то меньшем, чем секунды. Используя Rails, в моей миграции у меня есть возможность создать столбец date или столбец datetime, первый из которых слишком менее точный, а второй слишком много (до второго и менее). Какой тип выбрать для хранения такой даты? В настоящее время я использую datetime и устанавливаю для секунд фиксированное значение (например, 0) вручную каждый раз, когда в модели устанавливается какая-либо дата.

Примерно так:

self.date ||= Time.now.change(:sec => 0)

Я совершенно не в курсе? Должен ли я просто использовать целочисленное поле для каждого компонента даты вместо этого? (год, месяц, день и т. д ...) Или datetime правильный тип, но я не понимаю его цели? (Я думаю, что это для меток времени и таких вещей, где секунды имеют значение)

1 Ответ

1 голос
/ 21 мая 2011

datetime - правильный тип.И обязательно сохраните его без часового пояса в часовом поясе UTC:

http://derickrethans.nl/storing-date-time-in-database.html

По вашему выбору, используйте триггер SQL, чтобы округлить дату до минуты при вставке / обновлении.Это упростит ваш код ruby.

...