Jako dokumentacja mówi:
Nie mówi nic o zamianie start_expression i end_expression, aby dopasować wartości min i max. Powinieneś oczekiwać, że wynik będzie udokumentowany, a nie taki, jak uważasz, że powinien.
Dla ciekawskich, standard ANSI SQL99 określa, że predykat BETWEEN powinien zawierać klauzulę porównania SYMMETRIC lub ASYMMETRIC. Tylko SYMETRYCZNA może zamienić zakres początkowy i końcowy, a SYMETRYCZNA musi być ścisła. Forma ASYMETRYCZNA jest formą niejawną. Innymi słowy implementacja, która interpretuje A BETWEEN X and Y
jako (A>=X AND A<=Y) OR (A>=Y AND A<=X)
, jak sugeruje OP, nie jest zgodny ze standardami.