繁体   English   中英

比较 Rails 活动记录中日期时间列上的日期

[英]Compare date on a datetime column in rails active record

在使用 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 会将其保存在 mysql 和 GMT+0 中。 这意味着 created_at 在 mysql 中是 2020-04-30 22:00 GMT+0。 然后User.where("date(created_at) =?", date)不会返回这个。

这种情况有好的解决方案吗?

像这样的东西

# 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM