Если сегодня «ГГГГ-мм-31», а в следующем месяце не будет 31-го дня, он отобразит следующий месяц этого дня, чтобы система отображала результат «+3 месяца» вместо «+2 месяца», результат.
Итак, я думаю, что это самая безопасная ситуация:
$end_date=date("Y-m-d",strtotime("+2 month",strtotime(date("Y-m-01",strtotime("now") ) )));
Сначала измените дату на первый день.
Это вопрос мышления. Вы должны найти «двойную» форму вашего вопроса (-> двойное отрицание).
Вам нужно найти все заказы, по крайней мере, на одной строке, которые еще не готовы.
Предполагая, что ваши таблицы являются общими:
Order ( ID , bla, bla, bla) и Строка заказа ( orderID, строка № , статус, бла, бла) FK или порядок ссылок ссылок.
Вы можете использовать эту заглушку:
Select *
from orders O
where not exists ( select * from order_line OL
where ol.orderID=O.orderID --binding with outer query
and status <> 'ready'
)
ПОБОЧНОЕ ПРИМЕЧАНИЕ: мой запрос будет выдавать также пустые ордера, чтобы отфильтровать их, просто добавив к внешнему запросу and exists (select * from orderline oe where oe.orderid=o.orderid)