我需要在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)'
我做错了什么?
答案 0 :(得分:3)
我不确定理解你的问题,但是......
首先为什么不使用Ruby datetime formating
?
但如果这个日期是一列:
Arel::Nodes::NamedFunction.new('CAST', [Model.arel_table[:column_name].as(Arel::Nodes::Quoted.new('DATETIME'))])