Rails&SQLite3:日期错误匹配
问题描述:
Rails从我的数据库记录中返回错误的日期。对于我的模型(“目标”),如果我在脚本中运行/控制台:Rails&SQLite3:日期错误匹配
Target.find :all
我让我所有的记录与“2000-01-01 XX的“recorded_on”字段阅读日期:XX: XX”。
如果我采取相同的数据库和sqlite3的控制台中运行:
SELECT * FROM targets;
我让我所有的记录与“2009-04-22 XX的“recorded_on”字段阅读日期:XX: xx“,这是正确的日期。
两者之间的时间值似乎是正确的,只有日期值是关闭的。
发生了什么事?
答
在rails和你的数据库之间可靠的时间转换取决于大量的rails和数据库配置voodoo,I had no patience to tackle。
我最终的解决方案是停止在数据库中存储时间值。我存储整数:
Modelname.time_column = Time.now().to_i
(其实,我在属性的setter的重写的to_i位,并在吸气:)
Time.at(read_attribute(:time_column))
这是一个黑客相反的过程,但我对其简单性感到满意,并且在配置和开发机器之间移动它非常简单。
缺点是,当然,当你查询时,sql会给你一个老式的int。 MySQL可能有转换的方法,但我怀疑SQLite会如何。
啊,我明白了。那么,这个解决方案并不适合我需要的东西(虽然它确实回答了我的问题)。我刚刚起床并切换到PostgreSQL - 没有问题!谢谢! – neezer 2009-04-28 19:43:03