sql - Rails 中同一列的 OR 条件在哪里

标签 sql ruby-on-rails rails-activerecord

我正在尝试检索具有 expired_at 的所有记录为零和 expired_at大于当前时间。
我试过这个:

PriceRule.where("expired_at > ? OR expired_at = ?", DateTime.now, nil)
但这只是返回给我的记录 expired_at大于 DateTime.now .为什么是nil被忽视?

最佳答案

您还可以利用 Rails or 在这里,它将处理 IS NULL而不是 = NULL .我还建议使用 Time.current 相反,它对时区有更好的支持。

PriceRule
  .where('expired_at > ?', Time.current)
  .or(PriceRule.where(expired_at: nil))

关于sql - Rails 中同一列的 OR 条件在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63197704/

相关文章:

SQL 条件列存在

ruby-on-rails - 有没有办法在 Rails 控制台内的输出上实现类似 grep 的功能

ruby-on-rails - 在 Rails 电子商务应用程序中添加自定义统一运费

ruby-on-rails - 出现意外 ',' ,期待 => 禁止错误

ruby-on-rails - 检查 activerecord 是否锁定在 "updating"状态

sql - 微软 SQL : What is the easiest/nicest way to create a linked server with SSMS?

只有当所有行都是 WHERE 的值时,MySQL 才返回单行

sql - 在进行游标提取时,如何判断哪个记录导致错误?

javascript - sprockets :我可以在两个不同的 Controller 中包含两个不同的 javascript 文件吗

ruby-on-rails - 为引用自己表的外键创建 Rails 5 迁移