sql - Arel 查询 CAST 操作

标签 sql arel

我需要在 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/

相关文章:

Mysql select查询3张表

ruby-on-rails - Ransack:按年份排序

ruby - 如何离开加入Arel?

ruby-on-rails - 如何在初始 where 语句中使用 Arel::Nodes::TableAlias

sql - 相关记录的条件计数

sql - mysql - 基于其他行更新行

sql - 如何在 Crystal Reports 中将数据分组为图表

sql - 如何在 Oracle IDE 中获取查询执行计划?

ruby-on-rails-3 - 检查日期不为空? (铁轨,阿雷尔)

ruby-on-rails - 与 Arel (Rails 3) 的预加载关联计数