SELECT NOW() - INTERVAL '$1 DAY';
我不明白为什么这个查询有效。查询中存在无效的$ literal。
答案 0 :(得分:2)
在解析timestamp
或interval
值时,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.