2012-04-23 3 views
1

私はレールを初めて使用していて、それがどのように動作するかをまだ学習しています。私は、オブジェクトが入力されているすべての年のリストを得ることができるように、レガシーのOracleデータベースの日付列から年のリストを取得しようとしています。 Oracleデータベースは10gで、私はruby 1.9.2p290でレール3.2を使用し、Oracle拡張アダプタ・ガムを使用しています。従来のOracleデータベースとActiveRecordから日付列をクエリする際に問題が発生しました。

- License.select("distinct(to_char(application_date,'yyyy'))").each do |lic| 
    %p= lic.attributes 

結果を、私は戻って取得数です:

現在、私は次のコードは、私のクエリを行って使用しています(.attributeは私がクエリから返されているものをどのような決定を支援することです)私がアクセスする方法がわからないデータベース列に見つかったすべての別々の年を含むハッシュの

{"(to_char(application_date,'yyyy'))"=>"2002"} 

また、データベーステーブルの日付列からすべての行を選択して出力してみました。しかし、私は解決方法を理解していないというオラクルのエラーが出ます。

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 

私も設定した

- License.select("application_date").uniq.each do |lic| 
    %p= lic.year 

することは私に次のエラーを与えます列は、ライセンスモデルの日付列:

set_date_columns :application_date 

データベースの日付列のすべての行から別々の年を取得する方法はありますか?私はその1つの列からのユニークな年のデータセットの望ましい結果を得る方法についてはあまりよく分かりません。

答えて

0

私の問題は、Oracleが日付列を処理する方法と関係していたようです。ソリューションhereを使用することで、私はOracleのエラーで私の問題を解決することができました。

関連する問題