使用 PostgreSQL 运行 4.2.3。
数据库表 company
有字段:
start_day_time: 字符串
end_day_time: 字符串
存储小时:分钟,如:
开始时间:10:00,结束时间:23:00
ActiveRecord,其中通过此字段进行比较的表达式运行良好。我可以轻松找到当前开放的公司
today_date = Time.zone.now
today_date_time = today_date.strftime('%H:%M')
Company.where(
'start_day_time < ? AND end_day_time > ?', today_date_time, today_date_time
)
问题
但是当 end_day_time
为 00:00 时比较失败。只有当我使用 23:59 时它才有效。
有办法解决这个问题吗? 我可以在我的 sql 表达式中使用额外的规则来临时将 00:00 变为 23:59 仅用于此查询吗?
最简单的方法——不要在此字段中存储 00:00。但是他们在用户界面中使用来显示公司的工作时间。
最佳答案
我最近刚做了这样的事情。
在我的模型中,我创建了一个名为 happening_now 的方法?
原来是这样的
def happening_now?
Time.now.strftime('2000-01-01 %H:%m:%S').between?(self.starts_st, self.ends_at)
end
希望对您有所帮助。
关于mysql - 10 :00 - 00:00 之间的 Rails ActiveRecord 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024532/