Sql Arel查询转换操作

Sql Arel查询转换操作,sql,arel,Sql,Arel,我需要在Arel中形成一个查询,该查询之前有一个CAST操作。原始查询如下所示: 从tablename.junival>=CAST的tablename中选择*作为日期时间(STR_TO_DATE(?,%d-%m-%Y-%k-%i-%s)) (在进一步代码中,问号替换为实际日期) 对于where条件,我将执行以下操作: where(tablename['anniversary'] .gteq("CAST(STR_TO_DATE(#{date_value

我需要在Arel中形成一个查询,该查询之前有一个CAST操作。原始查询如下所示: 从tablename.junival>=CAST的tablename中选择*作为日期时间(STR_TO_DATE(?,%d-%m-%Y-%k-%i-%s))

(在进一步代码中,问号替换为实际日期)

对于where条件,我将执行以下操作:

where(tablename['anniversary']
                       .gteq("CAST(STR_TO_DATE(#{date_value},'%d-%m-%Y %k:%i') as DATETIME)"))
我应该得到的最终结果查询应该有: tablename.Junival>=“2015-07-13 16:12:00”

但我得到:

tablename.anniversary >= 'CAST(STR_TO_DATE(13-09-2015 05:33PM,\'%d-%m-%Y %k:%i\') as DATETIME)'

我做错了什么?

我不确定你是否理解你的问题,但是

首先,你为什么不用Ruby呢 ?
但如果此日期是一列:

Arel::Nodes::NamedFunction.new('CAST', [Model.arel_table[:column_name].as(Arel::Nodes::Quoted.new('DATETIME'))])

Arel::Nodes::Quoted('DATETIME')似乎不起作用,说它是未定义的。编辑它,谢谢。它是Arel::Nodes::Quoted.new('DATETIME'),但是否有效取决于您的数据库。