【问题标题】:Compare date on a datetime column in rails active record比较 Rails 活动记录中日期时间列上的日期
【发布时间】:2020-05-21 08:08:28
【问题描述】:

在使用 mysql 时尝试比较日期时间列等于 rails 中的日期时遇到问题。例如,我想在 2020-05-01 找到用户创建但“created_at”列的类型是日期时间,首先我尝试:

User.where("date(created_at) = ?", date) # date is 2020-05-01

但是当我在日本时区使用 rails 并且在 2020-05-01 07:00 GMT+9 创建的用户时,rails 会使用 GMT+0 将其保存在 mysql 中。这意味着 created_at 在 mysql 中是 2020-04-30 22:00 GMT+0。然后User.where("date(created_at) = ?", date) 不会返回这个。

这种情况有好的解决办法吗?

【问题讨论】:

    标签: mysql ruby-on-rails activerecord


    【解决方案1】:

    类似的东西

    # convert date to datetime
    date = "2020-05-01".to_datetime 
    

    所以你可以这样做:

    User.where(created_at: date.beginning_of_day..date.end_of_day)
    

    有了下面的评论,它变得更短了:

    User.where(created_at: created_at: date.all_day)
    

    date.all_day 会给你类似的东西

    Sun, 17 May 2020 00:00:00 UTC +00:00..Sun, 17 May 2020 23:59:59 UTC +00:00
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-12
      • 2018-05-29
      • 1970-01-01
      • 2020-10-02
      • 2012-01-20
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多