选择在时间范围内创建的记录,无论创建日期

时间:2016-11-24 08:39:33

标签: ruby-on-rails ruby postgresql activerecord

我想选择在凌晨2点到凌晨3点之间创建的一组记录,无论其创建日期如何。有没有办法实现这个目标?

数据库:PostgreSQL

2 个答案:

答案 0 :(得分:2)

使用PostgreSQL:

Model.where("created_at::time BETWEEN '14:00:00' AND '15:00:00'")

P.S。在处理时间查询之前,请确保您了解Rails默认时区(UTC)以及与用户相关的问题'时区差异。

答案 1 :(得分:2)

您可以使用PostgreSQL中的extract功能从date_time中提取时间

SELECT * FROM users WHERE extract(hour from created_at) BETWEEN 2 and 3;
  

是否有可能在23:00:00至01:00:00之间进行检查。

同样不适用于time BETWEEN 23 and 1,但您可以通过以下方式实现:

SELECT * FROM users WHERE extract(hour from created_at) >= 23 and extract(hour from created_at) < 1;