ошибка во втором приведении
now() - interval '1 day'::timestamp
переводится как.
now() - (interval '1 day')::timestamp
когда вы на самом деле имеете в виду
(now() - interval '1 day')::timestamp
или, возможно, вы имеете в виду
now()::timestamp - interval '1 day'
оба действительны, но результат, который вы получите, когда переход на летнее время начинается или останавливается, отличается (подсказка interval '1 day'
совпадает с interval '24 hours'
в первом)
Существует большая вероятность того, что вы на самом деле должны использовать timestamp with time zone
для столбца базы данных.