Как сравнить две даты в 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;
Работает как шарм!