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会如何。

+0

啊,我明白了。那么,这个解决方案并不适合我需要的东西(虽然它确实回答了我的问题)。我刚刚起床并切换到PostgreSQL - 没有问题!谢谢! – neezer 2009-04-28 19:43:03