Different syntax to add/substract interval Till now I used the following syntax to add an interval to a timestamp:

select now() + '5 year';


This worked fine till I tried to subtract the interval which results in a syntax error.

invalid input syntax for type timestamp with time zone: "5 year"
LINE 1: select now() - '5 year'


In the documentation I learned that the syntax actually is:

select now() - interval '5 year'


So my questions are:
Why does select now() + '5 year' work at all?
Does it work only by accident and it might break in a future Postgresql release?
My guess(!) is: 

The + operator for timestamps only supports adding an interval (timestamp + interval). And thus it's clear that the string value '5 year' needs to be (implicitly) converted to an interval 

The - operator on the other hand supports two different combinations: 


timestamp - timestamp 
timestamp - interval.


Apparently Postgres prefers to use the timestamp - timestamp option and tries to (implicitly) convert '5 year' to a timestamp which of course fails.