为什么这个postgres查询工作正常?

时间:2018-05-03 10:45:22

标签: database postgresql psql

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

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

1 个答案:

答案 0 :(得分:2)

在解析timestampinterval值时,PostgreSQL会忽略不是+-.,数字或字母字符的可打印字符。

请参阅ParseDateTime中的src/backend/utils/adt/datetime.c

/* 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.