Создал функцию в Postgres с таким заколовком:
CREATE OR REPLACE FUNCTION prepare_report(tradedate date DEFAULT DATE 'yesterday')
Т.е. функции нужна дата. Если дату не передали, то автоматически используется вчерашняя.
Но оказалось, что этой ситуации yesterday - это "вчера" по состоянию на момент создания функции, т.е. оно тупо заменяется на константу.
Правильно так:
CREATE OR REPLACE FUNCTION prepare_report(tradedate date DEFAULT CURRENT_DATE - INTERVAL '1' day)
CREATE OR REPLACE FUNCTION prepare_report(tradedate date DEFAULT DATE 'yesterday')
Т.е. функции нужна дата. Если дату не передали, то автоматически используется вчерашняя.
Но оказалось, что этой ситуации yesterday - это "вчера" по состоянию на момент создания функции, т.е. оно тупо заменяется на константу.
Правильно так:
CREATE OR REPLACE FUNCTION prepare_report(tradedate date DEFAULT CURRENT_DATE - INTERVAL '1' day)
2 комментария:
Обалдеть! Как ты обнаружил это?
Копировал текст процедуры из pgAdmin и увидел.
Отправить комментарий