1

私はレールに不慣れで、それがすべてどのように機能するかをまだ学んでいます。オブジェクトが入力されたすべての年のリストを取得できるように、従来のOracleデータベースの日付列から年のリストを取得しようとしています。Oracleデータベースは10gで、私はRails3.2とruby1.9.2p290を使用し、oracle拡張アダプターgemを使用しています。

現在、次のコードを使用してクエリを実行しています(.attributeは、クエリから何が返されるかを判断するのに役立ちます)。

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

私が返す結果は、アクセス方法がわからないデータベース列で見つかったすべての明確な年を含むハッシュの数です。

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

また、データベーステーブルの日付列からすべての行を選択して結果を出力しようとしました。ただし、解決方法がよくわからない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 Enhanced Adapterは、oracle初期化子の列名で日付をエミュレートするように構成されています。

self.emulate_dates_by_column_name = true

また、ライセンスモデルの列を日付列に設定しました。

set_date_columns :application_date

データベースの日付列のすべての行から個別の年を取得する方法はありますか?その1つの列から、固有の年のデータセットの望ましい結果を取得する方法がよくわかりません。

4

1 に答える 1

0

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

于 2012-04-25T14:46:52.380 に答える