database - 这个 postgres 查询是怎么工作的?

标签 database postgresql psql

SELECT NOW() - INTERVAL '$1 DAY';

我不明白为什么这个查询有效。查询中存在无效的 $ 文字。

最佳答案

当解析 timestampinterval 值时,PostgreSQL 会忽略不是 +-.,一个数字或一个字母字符。

参见 src/backend/utils/adt/datetime.c 中的 ParseDateTime:

/* ignore other punctuation but use as delimiter */
else if (ispunct((unsigned char) *cp))
{
    cp++;
    continue;
}

来自 man ispunct:

ispunct()
      checks for any printable character which is not a space or an
      alphanumeric character.

关于database - 这个 postgres 查询是怎么工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50153122/

相关文章:

mysql - MySQL 中的解耦表能提高多少性能?

python - Django raw sql/postgres 时区混淆

PostgreSQL:使用不带斜杠语法的 SQL 显示域属性

postgresql - 使用 psql\copy 导入带有时间戳列 (dd.mm.yyyy hh.mm.ss) 的 .csv

sql - 如何使用查询的起始值创建序列?

mysql - 如何使选择查询在具有 4 列(sno、sname、job、dept)、有 10 条记录的简单表上运行超过 30 分钟?

sql - 快速单表数据库

sql - Postgresql 9.0 中的反向 FK 约束?

postgresql - 如何在单个查询中获取多个计数

node.js - 尝试 knex 种子 :run after successful knex migrate:latest for remote database 时出错