Это объединение даты, которая не работает. Он преобразует строки в числа, поэтому вы получаете 2009 + 11 + -1 = 2019, который затем не удается преобразовать в дату.
Вместо того, чтобы объединять дату из строк, вы можете использовать функцию last_day, чтобы получить последний день текущего месяца, добавить один день, чтобы перейти к следующему дню следующего месяца, а затем вычесть два месяца, чтобы получить первый. день предыдущего месяца:
select last_day(now()) + interval 1 day - interval 2 month;