1

我有一个范围,它从数据库中提取所有调用,状态为打开,分配了单位,并且 transfer_date <= Date.today。

scope :open_calls, lambda { open_status.includes(:call_units).where(["call_units.unit_id IS NOT NULL"]).where("EXTRACT(DAY FROM transfer_date) <= ? AND EXTRACT(MONTH FROM transfer_date) <= ?", Date.today.day, Date.today.month).order("calls.id ASC") }

我遇到的问题是,如果我将呼叫的转移日期设置为今天晚上 9:30,则呼叫不包含在范围内。我认为这与 UTC/时区有关。我试图找出编写此范围的最佳方法是什么,以便我可以拉出所有调用 <= Date.today 并显示正确的结果。

我在查询中使用 postgres btw ergo EXTRACT。

4

1 回答 1

0

到目前为止,我已经使用了这个范围,并且能够在一天结束时将所有呼叫拉到今天。看起来它也适用于时区问题。

scope :open_calls, lambda { open_status.includes(:call_units).where(["call_units.unit_id IS NOT NULL"]).where("transfer_date <= ?", Time.zone.today.end_of_day) }
于 2013-01-14T21:00:51.957 回答