1

使用此查询:

users = User.where('confirmed_at is NULL AND confirmation_sent_at <= DATE_SUB(NOW(), INTERVAL ? days)', 1)

在 mysql 中一切正常,但在 Postgresql 中失败:

PG::SyntaxError: ERROR:  syntax error at or near "1"
    LINE 1: ...AND confirmation_sent_at <= DATE_SUB(NOW(), INTERVAL 1 day))
                                                                 ^
    : SELECT "users".* FROM "users"
      WHERE (confirmed_at is NULL AND confirmation_sent_at <= DATE_SUB(NOW(), INTERVAL 1 day))

我试图理解但错过了这里的上下文。为什么整数 1 在此查询中无效?

4

2 回答 2

3

PostgreSQL中没有函数DATE_SUB(),所以它不能工作。

这个表达式可以在 Postgres 中使用:

... AND confirmation_sent_at <= (now() - interval '1 day')

或者,如果confirmation_sent_atdate

... AND confirmation_sent_at <= (now()::date - 1)
于 2013-11-08T20:15:16.170 回答
1

尝试...

users = User.where(
    "confirmed_at IS NULL " +
    "AND confirmation_sent_at <= (NOW() - INTERVAL '1 DAY')"
)
于 2013-11-08T20:15:33.990 回答