No, I said : “equal may imply some transformation” (I meant casting to number).

That is why in oracle a=b and b=c does not imply a=c, so the equal operator is not absolutely transitive. I almost included this one about neutral element, but I thought it is too special

In addition the neutral element is supposed to be 0

with t as (select time '12:34:56.789' t, interval '999999999' day(9) i from dual)
select case when t+i=t and i!=interval '0' second then 'YES ' else 'NO ' end
"T+I=T AND I!=0"
from t;
T+I=T AND I!=0
--------------
YES

The + operator is associative over real numbers (complex ones too, come to that) but there’s nothing to say that it has to be associative in all cases. Consider languages where string concatenation is indicated by +

stringvar := ‘Start ‘+ ‘Finish';

No one reading that would expect A + B equivalent to B + A, would they?

Hi Nigel,
You comment makes sense. In C++, you can redefine the + operator to whatever you want. So you can say that 1 vodka + 1 orange = 1 drink. In my opinion it is a bad practice to redefine the + operator in such a way that it loses its properties. So define string:=’Start’+’Finish’ loses another property, namely the commutativity

What is obvious here is that the value of A changes from 30 for all September dates to 31 for the October dates. This coincides with the number of days in the respected months. Another query to demonstrate this difference in the value of INTERVAL: