我正在尝试返回前天的记录。我的记录包含日期和时间日期created_at列。虽然我的条件只有日期所以它总是不返回任何记录。
我使用strftime在sqlite上开发工作来消除时间,但是如何在PG上直播呢?
@articles = Article.where("created_at = ?", Date.yesterday-(params[:increment].to_i)).reverse
(增量=昨天之前的天数。)
非常感谢
答案 0 :(得分:3)
在当前版本的Rails中(从5.1版开始),您可以使用all_day
helper进行类似的查询:
bool TestItemListModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
// processing of other function arguments, checks, etc.
(*myData)[row].setName(value.value<std::string>());
// here I end up with ""
}
QVariant TestItemListModel::data(const QModelIndex &index, int role) const
{
// again all the checks, etc.
return QVariant::fromValue<std::string>((*myData)[row].getName());
}
答案 1 :(得分:2)
有几种方法。虽然我更喜欢日期范围:
.where("created_at > ? AND created_at < ?", date_from, date_to)
你也可以使用PostgreSQL内置的date_trunc
函数
.where("date_trunc('day', created_at) = ?", date)
但请记住,您在本地开发机器上也需要postgres。
文档:https://www.postgresql.org/docs/9.1/static/functions-datetime.html
答案 2 :(得分:1)
今天说是
> DateTime.now
=> Mon, 26 Jun 2017 00:17:12 +0545
> Account.where('created_at between ? and ?', 2.days.ago.beginning_of_day, 2.days.ago.end_of_day)
Account Load (0.5ms) SELECT "accounts".* FROM "accounts" WHERE (created_at between '2017-06-23 00:00:00' and '2017-06-23 23:59:59.999999') LIMIT ? [["LIMIT", 11]]
=> #<ActiveRecord::Relation [#<Asset id: 3, name: "created 4 days ago", code: nil, type: "Asset", created_at: "2017-06-17 06:57:13", updated_at: "2017-06-21 06:57:13">]>
Jun 25 00:00:00
开始到Jun 26 00:00:00
创建的文章。