ActiveRecord Prepared Statement在Oracle中无效

时间:2014-02-26 07:59:08

标签: mysql ruby-on-rails ruby oracle activerecord

正如你所看到的,Ruby不要逃避 :MI 所以我发现了一些令人讨厌的错误。
我陷入了从MySQL迁移到Oracle11g的过程中,我无法重构代码,不得不让它变得粗糙。我保证我会重写代码!
这是我的代码的一部分

.joins("LEFT JOIN (SELECT * FROM days ) days ON SYSDATE = to_date(to_char(days.date_x, 'YYYY-MM-DD'), 'YYYY-MM-DD') ")
     .where("attach_offices.ab_id = :abs_id AND
            to_date(to_char(to_date('#{@date}', 'YYYY-MM-DD HH24\:MI\:SS'), 'YYYY-MM-DD'), 'YYYY-MM-DD') between to_date(to_char(attach_offices.dt_begin, 'YYYY-MM-DD'), 'YYYY-MM-DD') and to_date(to_char(attach_offices.dt_end, 'YYYY-MM-DD'), 'YYYY-MM-DD') AND

              users.is_admin = 0",
              {:abs_id => current_user.ab_id, :current_user_id => current_user.id})

错误:

missing value for :MI in attach_offices.ab_id = :abs_id AND 
        to_date(to_char(to_date('2014-02-26 12:13:14', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD'), 'YYYY-MM-DD') between to_date(to_char(attach_offices.dt_begin, 'YYYY-MM-DD'), 'YYYY-MM-DD') and to_date(to_char(attach_offices.dt_end, 'YYYY-MM-DD'), 'YYYY-MM-DD') AND

          users.is_admin = 0

我试过#{%q(HH24:MI:SS)}但它没有帮助。有什么建议吗?

0 个答案:

没有答案