尝试仅根据时间过滤日期时间字段

时间:2015-10-27 20:49:12

标签: ruby-on-rails ruby ruby-on-rails-4 squeel

我在确定如何为我正在尝试的特定类型的查询构建范围时遇到了一些麻烦。

基本上我的可用性模型有start_timeend_time个日期时间列。

我的视图中有一个开始和结束时间下拉列表,它会在搜索中返回此查询:

 "availabilities"."start_time" >= '2015-10-27 00:00:00.000000' AND "availabilities"."end_time" <= '2015-10-31 00:00:00.000000'

我被要求添加新的时间范围过滤器:

Morning (6am - 12pm)
Afternoon (12-6pm)
Night (6pm - 12am )

我不确定我会如何处理。这是可用性记录的样子:

   <Availability:0x000000065b2bf0> {
                 :id => 1,
         :start_time => Sat, 21 Nov 2015 11:00:00 UTC +00:00,
           :end_time => Sat, 21 Nov 2015 12:00:00 UTC +00:00,
              :price => 24.1,
           :discount => 20.0,
         :created_at => Fri, 23 Oct 2015 21:31:49 UTC +00:00,
         :updated_at => Fri, 23 Oct 2015 21:31:49 UTC +00:00,
        :facility_id => 1,
         :booking_id => nil
    }

所以我只需要对字段的时间部分进行过滤,但我不确定如何处理它。

1 个答案:

答案 0 :(得分:0)

如何在查询中使用时间戳的一部分取决于您正在使用的数据库。例如,使用PostgreSQL,您可以使用提取功能根据一天中的时间对事物进行分组或过滤。

如果您不确定如何做到这一点,您还可以查看groupdate gem(https://github.com/ankane/groupdate),它似乎以更加数据库无关的方式执行您正在寻找的内容。