use*_*516 5 ruby sql postgresql ruby-on-rails rails-activerecord
我正在尝试查询我的rails数据库(Postgres)中的购买表,我想查询时间范围.
例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买.
created_at此表中有一列,但我没有看到如何在不搜索特定日期的情况下完成此操作.
我试过了:
Purchases.where("created_at BETWEEN ? and ?", Time.now - 1.hour, Time.now)
但这最终只会在那些时候搜索今天的日期.
您需要使用PostgreSQL的date_part/extract函数从created_at中提取小时部分.
SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 20
Run Code Online (Sandbox Code Playgroud)
例如,像这样:
Purchases.where(["EXTRACT(HOUR FROM created_at) BETWEEN ? AND ?", 13, 14])
Run Code Online (Sandbox Code Playgroud)