Как сравнить две даты в MySql, исключая выходные (SAT,SUN)

Я хочу найти разницу между двумя датами (dateStart, dateEnd) только для рабочих дней с понедельника по пятницу в запросе MySql.

Вот мой запрос, который сравнивает две даты и дает результат, если прошла неделя или более:

SELECT * FROM TABLE_NAME
WHERE status = 'Updated'
           AND
DATE_ADD(dateModified, INTERVAL 1 WEEK) >= NOW();

2 ответа

SELECT *
FROM TABLE_NAME
WHERE status = 'Updated'
  AND DATE_FORMAT(dateModified, '%w') IN (0, 6)
  AND DATE_ADD(dateModified, INTERVAL 1 WEEK) >= NOW();

Пожалуйста, обратитесь к Официальной документации MySQL для получения дополнительной информации.

Создайте функцию следующим образом:

 CREATE FUNCTION TOTAL_WEEKDAYS(date1 DATE, date2 DATE)
  RETURNS INT
  RETURN ABS(DATEDIFF(date2, date1)) + 1
 - ABS(DATEDIFF(ADDDATE(date2, INTERVAL 1 - DAYOFWEEK(date2) DAY),
                ADDDATE(date1, INTERVAL 1 - DAYOFWEEK(date1) DAY))) / 7 * 2
 - (DAYOFWEEK(IF(date1 < date2, date1, date2)) = 1)
 - (DAYOFWEEK(IF(date1 > date2, date1, date2)) = 7);

Затем запрос, как это:

SELECT * FROM TABLE_NAME WHERE status = 'Updated'
                     AND 
 TOTAL_WEEKDAYS(dateModified, NOW()) >=7;

Работает как шарм!

Другие вопросы по тегам