比较sql中Case语句中的两个日期

时间:2015-11-16 11:33:15

标签: ruby-on-rails postgresql ruby-on-rails-4

我想在sql Select语句的Case语句中比较rails中的两个日期。

School.select("CASE (#{holiday_date} > holidays.start_date)...")...

holiday_date是我函数中的参数,holidays.start_date是假期表中的一列。但是,这给了我以下错误:

PG::UndefinedFunction: ERROR:  operator does not exist: integer > date

为什么Rails将变量理解为整数。

1 个答案:

答案 0 :(得分:1)

您需要将您的参数转换为日期,然后再将其与列值进行比较。在你的情况下,你应该尝试:

School.select("CASE (to_date('#{holiday_date}', 'DD Mon YYYY') > holidays.start_date)...")

DD周一YYYY'是日期格式,您可以看到选项here