计算工作日时间差

--计算工作时间相差小时数
CREATE FUNCTION dbo.fun_CalculateWorkdays
(
@startdate DATETIME,    -- 开始日期
@enddate DATETIME        -- 结束日期(结束日期须大于开始日期)
)
RETURNS INT
AS
BEGIN
--工作时间08:00--17:00
declare @shour int,   @intdays INT, @currentdate DATETIME
SET @intdays = 0
if datepart(hour,@startdate)<8 
begin 
--开始时间在8点前,算成8点
  set @startdate=CONVERT(nvarchar(10),@startdate,120)+' '+'08:00:00'
end
 if datepart(hour,@startdate)>17
begin
--开始时间在17点后,算成17点
set @startdate=CONVERT(nvarchar(10),@startdate,120)+' '+'17:00:00'
end

if datepart(hour,@enddate)<8 
begin 
--结束时间在8点前,前一天算成17点
  set @enddate=CONVERT(nvarchar(10),@startdate-1,120)+' '+'17:00:00'
end
 if datepart(hour,@enddate)>17
begin
--结束时间在17点后,算成17点
set @startdate=CONVERT(nvarchar(10),@startdate,120)+' '+'17:00:00'
end

SET @currentdate = @startdate
IF (DATEDIFF(d, @startdate, @enddate) < 0 OR @startdate IS NULL OR @enddate IS NULL OR @startdate = '' OR @enddate = '')
SET @intdays = 0

ELSE
BEGIN
WHILE (DATEDIFF(d, @currentdate, @enddate) >= 0)
BEGIN
IF (DATEPART(dw, @currentdate) = 7)
SET @currentdate = DATEADD(d, 1, @currentdate)
IF (DATEPART(dw, @currentdate) = 6)
SET @currentdate = DATEADD(d, 2, @currentdate)
IF (DATEPART(dw, @currentdate) <= 5)
BEGIN
SET @currentdate = DATEADD(d, 1, @currentdate)
SET @intdays = @intdays + 1
END
END
END
set @shour=0
if @intdays -1 =0
begin
  set @shour=datediff(hour,@startdate,@enddate)
end
if @intdays -1 =1
begin
  set @shour = datediff(hour,@startdate,convert(nvarchar(10),@startdate,120) + ' ' + '17:00:00') + datediff(hour, convert(nvarchar(10),@enddate,120) + ' ' +'08:00:00',@enddate)
end
if @intdays -1 >1
begin
  set @shour = (@intdays-2)*8 + datediff(hour,@startdate,convert(nvarchar(10),@startdate,120) + ' ' + '17:00:00') + datediff(hour, convert(nvarchar(10),@enddate,120) + ' ' +'08:00:00',@enddate)
end
RETURN (@shour)            
END

调用

select  dbo.fun_CalculateWorkdays('2022-04-08 10:00:00','2022-04-13 15:00:00')

【无标题】SQL server 计算工作日(排除双休日)相关推荐

  1. 无废话-SQL Server 2005新功能(1) - TSQL

    无废话-SQL Server 2005新功能(1) - TSQL SQL Server 2005相对于SQL Server 2000改进很大,有些还是非常实用的. 举几个例子来简单说明 这些例子我引用 ...

  2. SQL Server内存故障排除

    翻译自:https://blogs.msdn.microsoft.com/karthick_pk/2012/06/15/troubleshooting-sql-server-memory/ SQL S ...

  3. SQL Server计算一年中的第几周

    一.计算一年中的第几天DATENAME(dp,d) DATENAME(dp,d)函数根据dp指定返回日期中相应部分的值,dp可以取值为:quarter,dayofyear,day,week,weekd ...

  4. java 计算工作日排除法定假日以及周末,增加指定工作日

    /*** <p>Title: main </P>* <p>Description: TODO </P>* @param args* return voi ...

  5. sql server计算日期到当前日期天数_Excel如何统计连续停机天数问题

    前几天有个朋友问了一个关于连续时间统计的问题,使用Power Query for Excel来解决的.今天在张俊红老师的公众号上看到了使用使用SQL来解决连续时间的统计问题.这个问题是一个非常经典的例 ...

  6. SQL server 计算当前日期为一年中的第几周,以周五/周一作为一周中的第一天

    这个问题对于小白的我来说,当时找了好久才解决,所以在这里记录一下. 要计算当前日期为一年中的第几周,以周五作为一周中的第一天 首先设置每周的起始天为周五(因为默认是从周天开始的) SET DATEFI ...

  7. sql server 计算2个日期相差的 天数,月数,年数,日期运算/计算

    --天数 select datediff(day,'2004-09-01','2004-09-02') --年数 select datediff(month,'2004-09-01','2004-10 ...

  8. SQL Server计算汉字笔画部首

    /* 有一个成语表,请计算 1)每个字笔画数都相同的成语 2)每个字都含有偏旁三点水或火字旁的成语 */--创建汉字词典 CREATE TABLE myHanzi (id INT NOT NULL,z ...

  9. sql server 计算两个时间 相差的 几天几时几分几秒

    CAST ( CAST ( DATEDIFF ( ss, StartTime, ConcludeTime ) / ( 60 * 60 * 24 ) AS INT ) AS VARCHAR ) + '天 ...

最新文章

  1. 开发日记-20190621 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  2. JavaScript中innerHTML与innerText,createTextNode的区别
  3. 我如何一分钱没花学完AI课程,入职新浪算法工程师
  4. Hyper-v Server QA
  5. c语言中switch的用法是什么?
  6. 数字图像处理-0.绪论
  7. 第十六章:springboot 整合logback日志
  8. 股价/期货等时间序列数据的整合检验、Grach建模
  9. CSS display 常用属性小结
  10. win10 安装sqlserver2000
  11. Python爬取淘宝销量数据!这年头数据就是钱啊!
  12. 【Ydui.js】------ ydui.js 中的 util 中的方法讲解如何调用使用 例如:获取地址栏信息,js 倒计时,cookie, 获取图片地址等
  13. 【SPSS】SPSS学习笔记
  14. 想学python网课哪个好过_求问一下jrs们,零基础学python哪个网课好?
  15. RV1126 OTG 功能
  16. overflow:auto自动滚动到底部(vue)
  17. 阻抗匹配50欧姆的由来
  18. 大数据最佳实践-flink
  19. Corsiniの时光漏
  20. 【Unity3D脚本】Transform类

热门文章

  1. Linux命令总结--touch命令
  2. vnc linux新用户,realvnc linux,realvnc linux配置的8个步骤
  3. (Cross-site request forgery)跨站请求伪造
  4. 区间dp-LightOJ-1422-万圣节服装
  5. 大牛直播SDK-Windows推送端使用说明 1
  6. html查看器默认设置,设置浏览器查看源文件打开的默认格式
  7. 摩根币的发行释放了哪些积极信号?
  8. 网络安全学习的三大不可取之处
  9. 思科设备配置路由重发布
  10. 安洵杯SYCCTF2023 writeup