【发布时间】:2014-01-20 10:23:03
【问题描述】:
我想做的是查找过去 60 天内使用过的特定记录。
我正在使用 Oracle (9i), 导轨 v:2.3.5, 红宝石 v:1.8.7
我定义日期间隔的代码是:
date =(((Time.now - 60.days).strftime("%d-%b-%y"))...(Time.now.strftime("%d-%b-%y")))
这是我的使用方法:
conditions = {}
conditions[:start_date] = date
conditions[:account_no] = account_number
results = MyModel.find(:all, :conditions => conditions)
要查看选择了什么,我基本上是这样做的:
results.each {|r|
if (!(r.column_name.nil?))
#do something here
end
}
结果: 代码正在运行,但“结果”为空
但是,当我将“MyModel.find...”生成的查询复制并粘贴到 sqlDeveloper 时,我可以明确地看到我想要的。
虽然我使用上面代码生成的相同查询,但我无法使用 SQL Developer 获得相同的结果应该是什么原因
【问题讨论】:
-
取出
strftimes,并传递原始时间值。 Rails 非常擅长将任何内容转换为正确的数据库格式。 -
我不相信它有效,谢谢..但我仍然无法理解生成的查询是如何工作的,但代码不是..再次感谢
-
你为什么要通过缩写月份
%b?这是数据的存储方式吗?通常 Rails 将日期存储为%Y-%m-%d您传递的是字符串范围而不是日期。 -
数据库将日期存储为(例如:“11-Oct-13”),这就是我使用 strftime 的原因。现在问题解决了,我只是生气,因为rails生成的查询正在工作,所以我从来没有想过删除strftime。
标签: ruby-on-rails ruby oracle date conditional-statements