MySQL 查询在 PostgreSQL 中失败

标签 mysql sql ruby-on-rails postgresql migrate

使用这个查询:

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 在此查询中无效?

最佳答案

PostgreSQL 中没有函数DATE_SUB(),所以无法运行。

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

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

或者,如果 confirmation_sent_atdate :

... AND confirmation_sent_at <= (now()::date - 1)

关于MySQL 查询在 PostgreSQL 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19867690/

相关文章:

php - 替换单引号和双引号

MySQL命令用于获取半径内且匹配相同类型的所有结果

ruby-on-rails - Rails 缓存分页集合

ruby-on-rails - 为所有 Rails 路由设置默认值

javascript - Rails 500 服务器错误

javascript - 在 DataTables 编辑器中添加行总计列

php - 如何使用php/动态价格从mysql获取促销日期

c# - 带有 Mysql ADO.NET 提供程序的 Mysql Ref Cursor

python - SQLAlchemy 使用合并更新 PostgreSQL 数组不起作用

MS Azure 中的 SQL 高可用性