我有一个名为 bill_date 的列,其数据类型为没有时区的时间戳。
现在我想用 bill_date 搜索记录。用户将输入日期,如 2012-12-09。
我想使用 Bill.find_by_bill_date(2012-12-09)。
以上不会给出结果。因为我们必须进行类型转换。请给我一些建议。我不想使用 where 子句或条件。我只想使用 find_by 。
我有一个名为 bill_date 的列,其数据类型为没有时区的时间戳。
现在我想用 bill_date 搜索记录。用户将输入日期,如 2012-12-09。
我想使用 Bill.find_by_bill_date(2012-12-09)。
以上不会给出结果。因为我们必须进行类型转换。请给我一些建议。我不想使用 where 子句或条件。我只想使用 find_by 。
您可以像这样向 Bill 类添加一个方法:
def self.find_by_bill_date(date)
where("DATE(bill_date) = DATE(?)", date).first
end
我知道您说过您不想使用 where 子句,但无论如何,动态查找器方法 (find_by_*) 做的事情完全相同。
将 Date.today 放入时间戳字段不是一个好习惯。如果您想现在使用它,最好使用 Time.now 而不是 Date.today ,或者将列更改为 date 。
编辑:在类型转换上:
>> h.published_at_before_type_cast
=> "2012-11-15 19:11:15.517923"