Я пытаюсь исключить воскресенья и праздничные дни между двумя днями, результат должен быть в часах. Я использую приведенный ниже запрос для рабочих часов, и я хочу запрос Исключая воскресенья и праздничные дни, он должен соответствовать ожидаемому результату. .
CREATE TABLE `customerevents` (
`Id` INT NOT NULL,
`Createddate` DATETIME NULL DEFAULT NULL,
`Modifiedate` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`Id`));
INSERT INTO `customereventss` (`Id`, `Createddate`, `Modifiedate`) VALUES ('1', '2020-01-10 23:00:00', '2020-01-13 15:00:00');
INSERT INTO `customereventss` (`Id`, `Createddate`, `Modifiedate`) VALUES ('2', '2020-01-10 23:00:00', '2020-01-13 03:00:00');
CREATE TABLE holidays` (Id INT NOT NULL,Holiday` DATETIME NULL DEFAULT NULL, PRIMARY KEY (Id)); INSERT INTO holidays (Id, Holiday) VALUES ('1', '2020-01-11 00:00:00');
Вот код, используемый для рабочего времени:
SELECT t.Createddate,t.Modifiedate,
SUM(TIMESTAMPDIFF(DAY, start_date, end_date) * 8 +
TIMESTAMPDIFF(MINUTE, TIME(start_time), TIME(end_time)) / 60
) AS task_time FROM customerevents t
JOIN (SELECT Id,date(Createddate) AS start_date,date(Modifiedate) AS end_date,week(Createddate) AS start_week,week(Modifiedate) AS end_week,
GREATEST('09:00', LEAST('17:00', TIME(Createddate))) AS start_time,
GREATEST('09:00', LEAST('17:00', TIME(Modifiedate))) AS end_time
FROM customerevents) tt on tt.Id=t.Id
GROUP BY t.id;
Результат:
Createddate Modifiedate task_time
2020-01-10 23:00:00 2020-01-13 15:00:00 22.00
2020-01-10 23:00:00 2020-01-13 03:00:00 16.00
Ожидаемый результат без учета воскресенья:
Createddate Modifiedate task_time
2020-01-10 23:00:00 2020-01-13 15:00:00 14.00
2020-01-10 23:00:00 2020-01-13 03:00:00 8.00