ОШИБКА: модификатор типа недопустим для типа «дата» (PostgreSQL) - PullRequest
0 голосов
/ 17 апреля 2020

Я получил ошибку при создании этой функции. Вы можете решить это?

CREATE OR REPLACE FUNCTION my_schema.test($1"date") 
   RETURNS date(-1)
   LANGUAGE SQL
   IMMUTABLE
AS $$   
       SELECT (date_trunc('MONTH', $1) + INTERVAL '1 MONTH - 1 day')::date;
$$
;

ERROR: syntax error at or near "$1"

, если я уберу 1 $ из ввода параметров, ошибка:

type modifier is not allowed for type "date".

1 Ответ

1 голос
/ 17 апреля 2020

date(-1) недействительно. Это должно быть просто date.

$1 также не допускается в качестве имени параметра в определении функции.

Вы либо вообще не предоставляете имя (например, test(date) - не рекомендуется), либо вы предоставляете имя, которое является допустимым идентификатором SQL (рекомендуется).

Также нет необходимости использовать $1 при обращении к параметру.

CREATE OR REPLACE FUNCTION my_schema.test(p_input date) 
   RETURNS date
   LANGUAGE SQL
   IMMUTABLE
AS $$   
  SELECT (date_trunc('MONTH', p_input) + INTERVAL '1 MONTH - 1 day')::date;
$$
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...