如何 select 行涵盖 pg / Rails 中的今天和月份

How to select rows covering today's day and month in pg / Rails

所以我有这个 table 叫做 SeasonRate

create_table "season_rates", force: :cascade do |t|
  t.string   "title"
  t.datetime "from_date"
  t.datetime "to_date"
  t.float    "rate"
  t.integer  "property_type_id"
  t.datetime "created_at",       null: false
  t.datetime "updated_at",       null: false
  t.index ["property_type_id"], name: "index_season_rates_on_property_type_id", using: :btree
end

我希望能够找到今天日期介于 from_dateto_date 之间的行,忽略年份。到目前为止,使用 this 我已经能够编写这段代码

def todays_rate(apartment)
  property_type = apartment.property_type_id
  @rate = SeasonRate.where(property_type_id: property_type)
  @todays_rate = @rate.where("extract (DOY FROM TIMESTAMP from_date) <= extract (DOY FROM TIMESTAMP ?) AND extract (DOY FROM TIMESTAMP to_date) >= extract (DOY FROM TIMESTAMP ?)",Date.today, Date.today)
end

但是它给我错误提示

PG::SyntaxError: ERROR: syntax error at or near "from_date" LINE 1: ...ty_type_id" = AND (extract (DOY FROM TIMESTAMP from_date)... ^ : SELECT "season_rates".* FROM "season_rates" WHERE "season_rates"."property_type_id" = AND (extract (DOY FROM TIMESTAMP from_date) <= extract (DOY FROM TIMESTAMP '2017-08-04') AND extract (DOY FROM TIMESTAMP to_date) >= extract (DOY FROM TIMESTAMP '2017-08-04'))

我已经搜索了很多这个问题,但找不到任何解决方案。请帮助我我在这里做错了什么,或者如果您有更好的解决方案来解决这个问题,那就太好了。非常感谢。

我可能是错的,但看起来添加 TIMESTAMP 是告诉 Postgres 将字符串转换为时间戳,然后你不是给它一个字符串,而是给它一个列名,因此出现语法错误:

select EXTRACT(DOY FROM TIMESTAMP created_at), created_at from users;
ERROR:  syntax error at or near "created_at"
LINE 1: select EXTRACT(DOY FROM TIMESTAMP created_at), created_at fr...

但你可以只给它列名而不是要转换的字符串,它似乎工作正常

select EXTRACT(DOY FROM created_at), created_at from users;
date_part |         created_at
-----------+----------------------------
       190 | 2017-07-09 21:07:41.746157