Arel查询CAST操作

时间:2015-09-14 12:16:07

标签: sql arel

我需要在Arel中形成一个先前有CAST操作的查询。原始查询如下:     select * from tablename where tablename.anniversary> = CAST(STR_TO_DATE(?,'%d-%m-%Y-%k-%i-%s')作为DATETIME)

(问号由更多代码中的实际日期替换)

对于where条件,我这样做:

where(tablename['anniversary']
                       .gteq("CAST(STR_TO_DATE(#{date_value},'%d-%m-%Y %k:%i') as DATETIME)"))

我应该得到的最终结果查询应该具有:     tablename.anniversary> =' 2015-07-13 16:12:00'

但我明白了:

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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

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

首先为什么不使用Ruby datetime formating
但如果这个日期是一列:

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