Простая альтернатива, позволяющая динамически определять поле, на котором основана сортировка:
$order_by = 'name';
usort($your_data, function ($a, $b) use ($order_by)
{
return strcmp($a->{$order_by}, $b->{$order_by});
});
Это основано на классе Closure , который позволяет анонимные функции , Он доступен с PHP 5.3.
Вы, кажется, хотите не обращать внимания на год. Если это так, то я бы порекомендовал:
TO_CHAR(datecol, 'MM/DD') BETWEEN '05/01' AND '07/08'
Чтобы BETWEEN
работал в этом случае, вам нужен формат в порядке MM-DD.
Если вы хотите это для определенного года, то используйте прямые сравнения дат:
datecol >= DATE '2018-05-01' AND
datecol < DATE '2018-07-09' -- note this is one day later
В датах Oracle есть компонент времени, поэтому вам следует соблюдать осторожность при проведении сравнений.