хотите знать одну дату, одна за другой, рабочая дата или нет / выходной - PullRequest
2 голосов
/ 13 января 2020

Моя функция работает отлично, когда я пропускаю полную дату начала и окончания месяца, она возвращает количество рабочих дней в месяце, но я хочу передать дату начала и окончания одинаково и хочу знать, что это один дата рабочий день или нет. вот моя рабочая функция, пожалуйста, измените ее, чтобы помочь мне узнать одну дату, так как это рабочая дата или нет. еще одна вещь состоит в том, что до 15 числа все субботы являются рабочими днями, а после 15 числа все субботы являются корпоративными праздниками, эта работа также выполняется в этой функции Функция:

CREATE FUNCTION FN_CNT_Working_days(StartDate DATE,
                                EndDate   DATE) 
RETURNS INT
BEGIN
DECLARE WORKING_DAYS INT;
SELECT
(DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) + 1)
-(FLOOR(DATEDIFF(EndDate, DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16)))/7) * 2)
-(CASE WHEN DAYNAME(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 16))) = 'Sunday' THEN 1 
ELSE 0 END)
-(CASE WHEN DAYNAME(EndDate) = 'Saturday' THEN 1 ELSE 0 END) 
 +
 (DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate) + 1)
 -(FLOOR(DATEDIFF(DATE(CONCAT(YEAR(EndDate), '-', MONTH(EndDate), '-', 15)), StartDate)/7))
 -(CASE WHEN DAYNAME(StartDate) = 'Sunday' THEN 1 ELSE 0 END)
 INTO WORKING_DAYS;

 RETURN (WORKING_DAYS);
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...