I think I would expect this behavior with how you have defined the constraints as the function results rather than just being strict comparisons to the timestamp field.
Instead of this- Check constraints: > "y2018_mis_ora_check" CHECK (date_part('year'::text, mis_ora) = > 2018::double precision) I would expect this- Check constraints: > "y2018_mis_ora_check" CHECK mis_ora) >= make_timestamp(2018, 1, > 1, 0, 0, 0::double precision) AND < make_timestamp(2019, 1, > 1, 0, 0, 0::double precision)