Я хотел бы получить данные между 25-м числом предыдущего месяца и 24-м числом этого месяца, используя MySQL

#mysql #datetime

Вопрос:

 select Orders, DeliveryDate  from Shipping  where DeliveryDate between '2021-11-25' and '2021-12-24';  

Теперь я жестко кодирую, как указано выше, что не идеально, потому что мне нужно менять дату каждый месяц. Я новичок в SQL. Пожалуйста, помогите мне с этим. Спасибо.

Ответ №1:

 SELECT Orders, DeliveryDate  FROM Shipping  WHERE DeliveryDate BETWEEN DATE_FORMAT(CURRENT_DATE, '%Y-%m-25') - INTERVAL 1 MONTH   AND DATE_FORMAT(CURRENT_DATE, '%Y-%m-24');  

DATE_FORMAT(CURRENT_DATE, '%Y-%m-24') формы 24-го числа текущего года/месяца.

DATE_FORMAT(CURRENT_DATE, '%Y-%m-25') - INTERVAL 1 MONTH формирует 25-е число текущего года/месяца, а затем вычитает месяц — то есть, наконец, формирует 25-е число предыдущего месяца.

Оба выражения являются константами во время выполнения определенного запроса, следовательно, они вычисляются во время построения плана выполнения и не влияют на время выполнения.