我需要在 Arel 中形成一个查询,该查询之前有一个 CAST 操作。原来的查询是这样的: select * from tablename where tablename.anniversary >= CAST(STR_TO_DATE(?,'%d-%m-%Y-%k-%i-%s') as DATETIME)
(问号在进一步的代码中被实际日期替换)
对于 where 条件,我正在这样做:
where(tablename['anniversary']
.gteq("CAST(STR_TO_DATE(#{date_value},'%d-%m-%Y %k:%i') as DATETIME)"))
我应该得到的最终查询结果应该是: 表名.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)'
我做错了什么?
最佳答案
我不确定你是否理解你的问题,但是......
首先为什么不直接使用 Ruby datetime formating
?
但如果这个日期是一列:
Arel::Nodes::NamedFunction.new('CAST', [Model.arel_table[:column_name].as(Arel::Nodes::Quoted.new('DATETIME'))])
关于sql - Arel 查询 CAST 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564568/