Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从旧Oracle数据库和ActiveRecord查询日期列时出现问题_Sql_Ruby On Rails_Oracle_Activerecord_Legacy Database - Fatal编程技术网

Sql 从旧Oracle数据库和ActiveRecord查询日期列时出现问题

Sql 从旧Oracle数据库和ActiveRecord查询日期列时出现问题,sql,ruby-on-rails,oracle,activerecord,legacy-database,Sql,Ruby On Rails,Oracle,Activerecord,Legacy Database,我是rails新手,仍在学习rails的工作原理。我正在尝试从旧式Oracle数据库中的日期列中检索年份列表,以便获得输入对象的所有年份的列表。Oracle数据库是10g,我使用的是rails 3.2和ruby 1.9.2p290,并使用Oracle增强适配器gem 目前,我正在使用以下代码执行查询。属性用于帮助我确定查询返回的内容: - License.select("distinct(to_char(application_date,'yyyy'))").each do |lic|

我是rails新手,仍在学习rails的工作原理。我正在尝试从旧式Oracle数据库中的日期列中检索年份列表,以便获得输入对象的所有年份的列表。Oracle数据库是10g,我使用的是rails 3.2和ruby 1.9.2p290,并使用Oracle增强适配器gem

目前,我正在使用以下代码执行查询。属性用于帮助我确定查询返回的内容:

- License.select("distinct(to_char(application_date,'yyyy'))").each do |lic|
    %p= lic.attributes
我得到的结果是一些散列,其中包含在数据库列中找到的所有不同年份,我不确定如何访问这些年份

{"(to_char(application_date,'yyyy'))"=>"2002"}
我还试图简单地从数据库表中选择date列中的所有行并输出结果。然而,我得到了一个Oracle错误,我不太明白如何解决

- License.select("application_date").uniq.each do |lic|
    %p= lic.year
请告诉我以下错误:

OCIError: ORA-01878: specified field not found in datetime or interval: SELECT DISTINCT application_date FROM "LICENSE" 
Oracle增强型适配器配置为在Oracle初始值设定项中按列名模拟日期:

self.emulate_dates_by_column_name = true
我还将许可证模型中的列设置为日期列:

set_date_columns :application_date

有没有办法从数据库中日期列的所有行中检索不同的年份?我不太确定如何从这一列中获得唯一年份数据集的预期结果。

我的问题似乎与Oracle处理日期列的方式有关。通过使用该解决方案,我能够解决Oracle错误的问题