我有一列,我只想存储时间(小时,分钟,秒)。例如这里是一个移民:2000-01-01 01:19:00 +0700
:Rails:为什么时间数据类型在1/1/2000开始
add_column :products, :start_hour, :time
当我插入到数据库start_hour
总是1/1/2000
例如启动。请为我解释为什么。
我有一列,我只想存储时间(小时,分钟,秒)。例如这里是一个移民:2000-01-01 01:19:00 +0700
:Rails:为什么时间数据类型在1/1/2000开始
add_column :products, :start_hour, :time
当我插入到数据库start_hour
总是1/1/2000
例如启动。请为我解释为什么。
Ruby中没有时间类或Rails所以ActiveRecord代表time
列与日期时间/时间戳记类。
如果您查看数据库内部没有任何ActiveRecord,Rails或Ruby噪声,您将看到HH:MM:SS
时间值。但是,当ActiveRecord将time
拉出数据库时,它将日期组件设置为2000-01-01,因为日期时间必须有日期并且AR选择该日期。
任何时候在Ruby中使用start_hour
时,都必须忽略日期组件。
存储在数据库中的格式之间的差别与Rails无关,与您的数据库有关的所有内容都无关。日期或时间格式在您的应用程序中仅“有效”,而不在数据库中 - 更简单地说,它们只负责将时间对象显示给用户,并且不会影响数据存储方式。您最好的选择是将记录保存为时间对象,然后使用Rails助手以strptime
等方法以有意义的方式向用户展示数据。
数据库有'时间'数据类型。这意味着时间不仅仅是应用程序的数据类型。 –
谢谢。为什么选择“1/1/2000”而不是1970年的基准时间。这里有什么原因。谢谢。 –
因为大多数Rails开发者在1970年都没有活着?说真的,可能没有什么特别的原因,他们只需要一个日期和2000-01-01看起来不错。 –