PostgreSQL and days that don't exist?
February has 28 days.

February in 2017 doesn't have 29 days. It has 28. End of story. If you need to store a 29th day, then your definition of date is different than PostgreSQL's and it will not be able to do date math or use date functions with your definition.

What is '2017-02-29'::date + interval '1 day' in your system though? February 30, March 1, or March 2? And, what would '2017-02-29'::date + interval '1 day' - interval '1 day' be?