Rails ActiveRecord在10:00 - 00:00之间的时间

时间:2015-08-15 12:04:52

标签: mysql ruby-on-rails ruby postgresql activerecord

使用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。但他们在用户界面中使用它来呈现公司的工作时间。

1 个答案:

答案 0 :(得分:1)

我刚刚做了这样的事情。
在我的模型中,我创建了一个名为happening_now的方法?

这就是它的样子

  def happening_now?
    Time.now.strftime('2000-01-01 %H:%m:%S').between?(self.starts_st, self.ends_at)
  end

我希望这会有所帮助。