使用PostgreSQL导航4.2.3。
数据库表company
包含字段:
start_day_time: string
end_day_time: string
存储小时:分钟如:
start_day_time:10:00,end_day_time: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。但他们在用户界面中使用它来呈现公司的工作时间。
答案 0 :(得分:1)
我刚刚做了这样的事情。
在我的模型中,我创建了一个名为happening_now的方法?
这就是它的样子
def happening_now?
Time.now.strftime('2000-01-01 %H:%m:%S').between?(self.starts_st, self.ends_at)
end
我希望这会有所帮助。