【问题标题】:Arel Query CAST operationArel 查询 CAST 操作
【发布时间】:2015-09-14 12:16:07
【问题描述】:

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

我应该得到的最终结果查询应该有: 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)'

我做错了什么?

【问题讨论】:

    标签: sql arel


    【解决方案1】:

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

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

    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'),但它是否有效取决于您的数据库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2011-02-23
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多