Как указано в документации :
BETWEEN возвращает TRUE, если значение test_expression больше или равно значению begin_expression и меньше или равно значениюend_expression.
Ничего не говорит о замене выражений start_expression и end_expression для соответствия минимальным и максимальным значениям.Вы должны ожидать, что результат задокументирован, а не так, как вы считаете.
Для любопытных, стандарт ANSI SQL99 указывает, что предикат BETWEEN должен включать условие сравнения SYMMETRIC или ASYMMETRIC.Только SYMMETRIC допускается менять местами start_range и end_range, ASYMMETRIC должен быть строгим.АСИММЕТРИЧЕСКАЯ форма является неявной формой.Другими словами, реализация, которая интерпретирует A BETWEEN X and Y
как (A>=X AND A<=Y) OR (A>=Y AND A<=X)
, как предполагает OP, не соответствует стандарту.