Почему этот запрос postgres работает? - PullRequest
0 голосов
/ 03 мая 2018
SELECT NOW() - INTERVAL '$1 DAY';

Я не понимаю, почему этот запрос работает. В запросе указан неверный литерал $.

1 Ответ

0 голосов
/ 03 мая 2018

При синтаксическом анализе значений 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...