Mic*_*ael 5 datetime ruby-on-rails range
我正在尝试构建一个查询,该查询将根据列'last_login_at'搜索最近的条目.这是一个带时区的日期时间字段(即Time.zone.now)执行时
User.find(:all, :conditions => ["last_login_at < ?", 24.hours.ago])
Run Code Online (Sandbox Code Playgroud)
我一无所获.
或者,我可以将今天定义为Time.zone.today昨天Time.zone.today - 1.day
和运行
User.find(:all, :conditions => ["last_login_at between ? and ?", today, yesterday])
Run Code Online (Sandbox Code Playgroud)
它仍然返回0结果.我知道有些条目属于这一类.
AJc*_*dez 19
老问题,但这里有更新的语法:
User.where(last_login_at: 3.days.ago..DateTime.now)
Run Code Online (Sandbox Code Playgroud)
Roj*_*uck 11
确保您在数据库中记录的时区和您的rails应用程序输出的时区是相同的.这有时会导致问题.否则尝试这个命名范围:
class User < ActiveRecord::Base
named_scope :last_loggedin_before, lambda { |time_ago| { :conditions => ['last_login_at < ?', time_ago] } }
named_scope :last_loggedin_within, lambda { |time_ago| { :conditions => ['last_login_at > ?', time_ago] } }
end
Run Code Online (Sandbox Code Playgroud)
允许你这样做:
User.last_loggedin_before 24.hours.ago
Run Code Online (Sandbox Code Playgroud)
要么
User.last_loggedin_within 24.hours.ago
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10401 次 |
| 最近记录: |