SQL中怎么计算工作日

61次阅读
没有评论

共计 1888 个字符,预计需要花费 5 分钟才能阅读完成。

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 中怎么计算工作日问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计1888字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)