假设您正在实现发布数据库并创建迁移以表示不同的发布。每个出版物都有一个与之相关的“年份”。
t.column :year, ???
今年最好表示为整数,日期或日期时间吗?
答案 0 :(得分:9)
我建议使用整数。 Date
和DateTime
都比您想要的更精确,这可能会产生误导。即使你只用一年初始化它们,它们也会存储一个默认的月和日(1月1日)。例如,如果您使用Date
,则输出将如下所示:
>> m = YourModel.create(:year => '2008')
>> m.year.to_s
=> "2008-01-01"
如果你使用整数,你会得到你期望的结果:
>> m = YourModel.create(:year => '2008')
>> m.year.to_s
=> "2008"
答案 1 :(得分:7)
我建议只使用Rails约定并执行Date
数据类型。这样,如果你做需要月和日,你可以检索它。此外,它很简单:
YourModel.date.year # => "1999"
答案 2 :(得分:0)
好吧,如果您只关心年,整数就会恰到好处。如果你不确定你永远不会需要月和日,那么日期,如果你还需要小时/分钟/秒,那么日期时间,但如果你需要一个日期时间,它不应该被称为年: - )