SQL中怎么計算工作日,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
CREATE FUNCTION Time_Span_of_minutes(
start_day DATETIME,
end_day DATETIME)
RETURNS FLOAT
BEGIN
-- 返回按分鐘計算兩段時間的間隔,采用逐日靠近的方法求解,一天按8小時480分鐘計算,周末不計,不考慮法定節假日。
-- 如果起始日期在周末,則計算當天時間。
DECLARE minutes FLOAT;
DECLARE next_day DATETIME;
SET minutes=0.0;
SET next_day=start_day;
IF(TIMESTAMPDIFF(DAY,start_day,end_day)<1.0) THEN
SET minutes=minutes+TIMESTAMPDIFF(MINUTE,start_day,end_day);
ELSE
WHILE TIMESTAMPDIFF(DAY,next_day,end_day)>=1.0 DO
IF ((DAYOFWEEK(next_day)=7) OR (DAYOFWEEK(next_day)=1)) THEN
SET next_day=next_day+INTERVAL 1 DAY;
ELSE
SET next_day=next_day+INTERVAL 1 DAY;
SET minutes=minutes+480.0;
END IF;
END WHILE;
SET minutes=minutes+TIMESTAMPDIFF(MINUTE,next_day,end_day);
IF ((DAYOFWEEK(start_day)=7) OR (DAYOFWEEK(start_day)=1)) THEN
SET minutes=minutes+TIMESTAMPDIFF(MINUTE,start_day,CONVERT(CONCAT(SUBSTRING(start_day FROM 1 FOR 10),' 17:30:00'),DATETIME));
END IF;
END IF;
RETURN minutes;
END;
CREATE FUNCTION Time_Span_of_minutes(
start_day DATETIME,
end_day DATETIME)
RETURNS FLOAT
BEGIN
-- 返回按分鐘計算兩段時間的間隔,采用逐日靠近的方法求解,一天按8小時480分鐘計算,周末不計,不考慮法定節假日。
-- 如果起始日期在周末,則計算當天時間。
DECLARE minutes FLOAT;
DECLARE next_day DATETIME;
SET minutes=0.0;
SET next_day=start_day;
IF(TIMESTAMPDIFF(DAY,start_day,end_day)<1.0) THEN
SET minutes=minutes+TIMESTAMPDIFF(MINUTE,start_day,end_day);
ELSE
WHILE TIMESTAMPDIFF(DAY,next_day,end_day)>=1.0 DO
IF ((DAYOFWEEK(next_day)=7) OR (DAYOFWEEK(next_day)=1)) THEN
SET next_day=next_day+INTERVAL 1 DAY;
ELSE
SET next_day=next_day+INTERVAL 1 DAY;
SET minutes=minutes+480.0;
END IF;
END WHILE;
SET minutes=minutes+TIMESTAMPDIFF(MINUTE,next_day,end_day);
IF ((DAYOFWEEK(start_day)=7) OR (DAYOFWEEK(start_day)=1)) THEN
SET minutes=minutes+TIMESTAMPDIFF(MINUTE,start_day,CONVERT(CONCAT(SUBSTRING(start_day FROM 1 FOR 10),' 17:30:00'),DATETIME));
END IF;
END IF;
RETURN minutes;
END;
關于SQL中怎么計算工作日問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。