0

我有一个名为 bill_date 的列,其数据类型为没有时区的时间戳。

现在我想用 bill_date 搜索记录。用户将输入日期,如 2012-12-09。

我想使用 Bill.find_by_bill_date(2012-12-09)。

以上不会给出结果。因为我们必须进行类型转换。请给我一些建议。我不想使用 where 子句或条件。我只想使用 find_by 。

4

2 回答 2

1

您可以像这样向 Bill 类添加一个方法:

def self.find_by_bill_date(date)
  where("DATE(bill_date) = DATE(?)", date).first
end

我知道您说过您不想使用 where 子句,但无论如何,动态查找器方法 (find_by_*) 做的事情完全相同。

于 2012-12-14T10:28:57.857 回答
0

将 Date.today 放入时间戳字段不是一个好习惯。如果您想现在使用它,最好使用 Time.now 而不是 Date.today ,或者将列更改为 date 。

编辑:在类型转换上:

>> h.published_at_before_type_cast
=> "2012-11-15 19:11:15.517923"
于 2012-12-14T10:32:11.840 回答