我需要使用默认的 created_at Rails 字段获取仅包含在时间范围内的记录。没关系,这一天是创造的。
我有这个:
@start_time = test.start_time.strftime("%I:%M%p")
@end_time test.end_time.strftime("%I:%M%p")
@websites = device.websites.where(:created_at => @start_time..@end_time)
我正在寻找这样的东西:
@websites = device.websites.where(:created_at::time => @start_time..@end_time)
这会生成这个没有结果的 SQL 语句。
SELECT DISTINCT `websites`.* FROM `websites` WHERE `websites`.`device_id` = 2 AND (`websites`.`created_at` BETWEEN '16:10:00' AND '21:10:00')
但是,如果我将时间函数添加到 created_at 字段,则可以正常工作。
SELECT DISTINCT `websites`.* FROM `websites` WHERE `websites`.`device_id` = 2 AND (time(`websites`.`created_at`) BETWEEN '16:10:00' AND '21:10:00')
最好的 Rails 方法是如何做到这一点的?