SQL-计算有效工作时间.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL计算有效工作时间 说明: 2 1、目的: 2 2、数据库: 2 3、数据表: 2 4、函数: 2 F_GetWorkTime 3 F_GetWorkTimeOnDay 5 F_GetWorkTimeOnWeek 8 说明: 1、目的: 计算有效工作时间,计算时间段内,排除每周休息日、节假(调休)日、每天非工作时间后的有效工作时间 2、数据库: SQL SERVER 3、数据表: DayWorkTime :每天工作时间段表 ; WeekWorkTime :每周工作时间安排表(比如1-5为工作日6-7为休息日); VacationDay :节假日(调休日)安排表 。 3张表通过wtsid(即同一个工作时间计划表)关联 ,具体表结构请自行设计 4、函数: F_GetWorkTimeOnDay: 根据设定时间段,计算开始时间和结束时间的有效时间总量,不排除节假日和周末; F_GetWorkTimeOnWeek:根据设定时间段,计算开始时间和结束时间的有效时间总量,不排除节假日; 需要调用F_GetWorkTimeOnDay F_GetWorkTime:根据设定时间段,计算开始时间和结束时间的有效时间总量,需要调用F_GetWorkTime F_GetWorkTime -- ============================================= -- Author: Author,,HeXiangGui -- Create date: Create Date, ,2018/03/29 -- Description: Description, ,根据设定时间段,计算开始时间和结束时间的有效时间总量 -- @starttime:开始时间 -- @endtime:结束时间 -- ============================================= ALTER FUNCTION [dbo].[F_GetWorkTime]( @startTime DATETIME=2001-01-01, @endTime DATETIME=2001-01-01, @wtsid uniqueidentifier=F4C461D4-E2D7-4165-8AE7-CE887B7C3D5E) RETURNS INT AS BEGIN ----------------------------------- ---结束时间早于开始时间直接返回0--- IF(@starttime=@endtime) BEGIN RETURN 0 END ------------------ ---临时变量定义--- DECLARE @countTimepart INT --时间段数量 SET @countTimepart=0 --初始化为0 DECLARE @workTime INT SET @workTime=0 DECLARE @validWorkTime INT SET @validWorkTime=0 DECLARE @invalidWorkTime INT SET @invalidWorkTime=0 DECLARE @isvalid BIT SET @isvalid=0 DECLARE @tempStartTime DATETIME -- DECLARE @tempEndTime DATETIME ------------------------ ----全局临时变量赋值---- SELECT @countTimepart=COUNT(1) FROM VacationDay WHERE NOT ((endTime = @startTime) OR (startTime = @endTime )) AND wtsid=@wtsid IF(@countTimepart1) --时间段和节假日表无交集 BEGIN SELECT @workTime=dbo.F_GetWorkTimeOnWeek(@startTime,@endTime,@wtsid) END IF(@countTimepart0) --时间段和节假日表有交集 BEGIN SELECT @tempEndTime=@startTime WHILE(@countTimepart0) BEGIN SELECT TOP 1 @tempStartTime=CASE WHEN startTime@startTime THEN startTime ELSE @startTime END, @tempEndTime=CASE WHEN endTime@endTime THEN endTime ELSE @endTime END,@isvalid=isAdjust FROM

文档评论(0)

js1180 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档