博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL 取时间差 去掉周末及非工作时间节假日
阅读量:5141 次
发布时间:2019-06-13

本文共 1410 字,大约阅读时间需要 4 分钟。

CREATE proc  s_Time_diff  ----s_Time_diff '2014/5/30 16:00' ,'2014/6/4 9:00' 

@Date_From nvarchar(40), 
@Date_End nvarchar(40) 
as 
 
declare @DateF datetime,@DateE datetime,@MI int,@work_From datetime,@work_End datetime 
,@HH decimal(18,2),@Date_Temp datetime,@DD int,@Num int,@Num_W int 
select @DateF=convert(char(4),DATEPART(YYYY,@Date_From))+'/'+convert(char(2),DATEPART(MM,@Date_From))+'/'+convert(char(2),DATEPART(DD,@Date_From)) 
select @DateE=convert(char(4),DATEPART(YYYY,@Date_End))+'/'+convert(char(2),DATEPART(MM,@Date_End))+'/'+convert(char(2),DATEPART(DD,@Date_End)) 
select @HH=0 
if(@DateF=@DateE)---起讫时间同一天 
begin 
  select @MI=DATEDIFF(Mi,@Date_From,@Date_End)  
end 
if(@DateF<>@DateE)---起讫时间不是同一天 
begin 
   select @work_From=convert(datetime,@DateE+' '+'8:30') 
   select @work_End=convert(datetime,@DateF+' '+'17:00') 
   select @Date_Temp=dateadd(dd,1,@DateF) 
   select @MI=DATEDIFF(Mi,@Date_From,@work_End)  
   while(@Date_Temp<@DateE) 
   begin 
      select @Num=COUNT(*) from Festival where  
      select @Num_W=datepart(weekday,@Date_Temp) 
      print @Num_W 
      if(@Num>0 or @Num_W=1 or @Num_W=7)---节假日 
      begin 
         select @HH=@HH+0 
      end 
      else 
      begin 
         select @HH=@HH+24 
      end 
      select @Date_Temp=dateadd(dd,1,@Date_Temp) 
      print @Date_Temp 
      print @DateE 
      select @Num=0 
   end 
   if(@Date_Temp=@DateE) 
   begin 
     select @MI+=DATEDIFF(Mi,@work_From,@Date_End)  
   end 
end 
select @HH=@HH+convert(decimal,@MI)/60  
select  
----Festival 节日表 

转载于:https://www.cnblogs.com/xiayan/p/3823875.html

你可能感兴趣的文章
打印单词长度的直方图--C语言的多种实现
查看>>
PLSql的使用
查看>>
用CAShapeLayer实现一个简单的饼状图(PieView)
查看>>
LA 3644 易爆物
查看>>
uboot 信息解读
查看>>
越是忙的时候,兴趣越多
查看>>
信步漫谈之Eclipse—插件安装
查看>>
字符串和字符数组的输入输出种类对比
查看>>
Python爬虫:抓取手机APP的数据
查看>>
手指滑动屏幕原理
查看>>
对于javascript里面闭包的理解
查看>>
LANMP安装总结
查看>>
因为没有打开的文档,所以这一命令无效==操作word问题
查看>>
C++获取Windows7 32位系统中所有进程名(类似于任务管理器中的进程)
查看>>
团队作业8----第二次项目冲刺(Beta阶段) 第三天
查看>>
用mrpt库时遇到的一个坑
查看>>
【19】235. Lowest Common Ancestor of a Binary Search Tree
查看>>
关闭vs的编译警告
查看>>
opencv载入,显示及保存图像
查看>>
C++回调机制实现(转)
查看>>