【问题标题】:Select records where Time.now is between two datetime fields选择 Time.now 在两个日期时间字段之间的记录
【发布时间】:2018-06-10 04:16:18
【问题描述】:

Activity 表中有 starts_atends_at 列。

我想要做的是选择Time.now 在这两列中的日期时间之间的所有记录。

【问题讨论】:

  • 您可以在帖子中添加表格的示例行吗?

标签: sql ruby-on-rails activerecord time


【解决方案1】:

试试这个

Activity.where("? BETWEEN starts_at AND ends_at", Time.zone.now)

【讨论】:

    【解决方案2】:

    你可以这样做:

    now = Time.now
    Activity.where('starts_at < ? AND ends_at > ?', now, now)
    

    您也可以改用包含不等式操作数(&lt;=&gt;=

    【讨论】:

      【解决方案3】:

      试试squeal gem,你会喜欢的,然后你可以用这个:

      Activity.where{starts_at < Time.now & ends_at > Time.now}
      

      或者第二个选项可以。

      实际上与某些 ORM 不同,活动记录不会使用方法来增加符号类,以允许以这种方式表达除相等之外的表达式。你只需要这样做

      Activity.where('starts_at = ?', Time.now, Time.now)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-14
        • 1970-01-01
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        相关资源
        最近更新 更多