Самая ограничительная дата, т.е. самая ранняя, будет определять фильтрацию, поскольку любые даты, превышающие эту, будут менее ограничительными.Таким образом, альтернативой использованию ALL
будет использование LEAST
:
WHERE date <= LEAST('2018-05-29', '2018-05-30', '2018-05-31')
EDIT (Гордоном):
В Oracle это будет:
WHERE date <= LEAST(DATE '2018-05-29', DATE '2018-05-30', DATE '2018-05-31')