私はレールに不慣れで、それがすべてどのように機能するかをまだ学んでいます。オブジェクトが入力されたすべての年のリストを取得できるように、従来の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つの列から、固有の年のデータセットの望ましい結果を取得する方法がよくわかりません。