/*

因为工作中一个奇怪的需求,要用SQL语言计算两个日期间有多少个工作日。

设定是一个星期有5个工作日,从星期一到星期五

说明:

第一个星期的工作日数:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天

末一个星期的工作日数:DATEPART(dw, @enddt),最多5天

计算方法:

如果两个日期处在同一个星期内,直接计算“第一个星期的工作日数”

否则按下面的公式计算

(两个日期间的总天数 - 第一个星期的天数 - 末一个星期的天数) / 7 * 5

+ 第一个星期的工作日数

+ 末一个星期的工作日数

*/

--计算并返回两个日期间的工作小时数(工作日*8)按周一到周五计算

--必须先SET DATEFIRST 1

CREATE FUNCTION dbo.CalcWorkHours(@bdate DATETIME, @edate DATETIME)

RETURNS INTEGER

AS BEGIN

DECLARE @hours INTEGER

IF @@DATEFIRST <> 1 OR @bdate > @edate

RETURN -1

SELECT @hours =

--如果终止日期与起始日期在同一个星期内,只需要计算有几天即可

CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN

CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0

WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)

ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END

--如果终止日期与起始日期在不同的星期内

--首先计算出除前后两个星期外完整的星期数 * 5

ELSE (DATEDIFF(dd,@bdate,@edate)

- (8-DATEPART(dw, @bdate))

- DATEPART(dw, @edate-1)) / 7 * 5

--再加上第一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)

ELSE 0 END

--加上末一个星期里的工作日数

+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END

END * 8

RETURN @hours

END

以上就是本文的全部内容,希望对大家的学习有所帮助。

sqlserver两个日期之间的年数_SQL语句计算两个日期之间有多少个工作日的方法相关推荐

  1. mysql 日期相减输出天数_SQL是计算两个日期相差多少天数的函数?

    展开全部 SQL是高e5a48de588b662616964757a686964616f31333365633961级的非过程化编程语言,一般针对数据库进行操作. 定义:datediff(day/mo ...

  2. java 计算两个日期相差月数_Java简单计算两个日期月数差的方法

    本文实例讲述了Java简单计算两个日期月数差的方法.分享给大家供大家参考,具体如下: /** * 获取两个日期相差的月数 * @param d1 较大的日期 * @param d2 较小的日期 * @ ...

  3. 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数。

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 题目: [实验案例3:函数的递归调用] 编写函数求两个数的最大公约数,采用递归法计算两数的最大公约数. [实验指导] 分析:m.n为两 ...

  4. php for循环语句计算1~100之间奇数的和

    php 利用for循环语句计算1-100之间奇数的和 <php sum=0;for(sum =0;for(sum=0;for(i=0,i<100,i<100,i<100,i++ ...

  5. java中怎么通过日期算出天数_Java如何通过计算两个日期的时间差来算出天数

    Java如何通过计算两个日期的时间差来算出天数,年月日,天数,时间,退房,时分 Java如何通过计算两个日期的时间差来算出天数 易采站长站,站长之家为您整理了Java如何通过计算两个日期的时间差来算出 ...

  6. RGB转一维线性色彩空间计算两个颜色的距离.判断颜色是否相近.计算两个颜色的差.

    我最近在解决一个问题, 想计算两个小图片的相似性. 为了简化计算我打算把rgb三种颜色的分离数值合并成一个数值. 两种颜色越是相近, 这两个数值的差越小例如 颜色 #000001和颜色#000002的 ...

  7. c语言中用if语句计算两数之差的绝对值,用位运算实现求绝对值-有效避开if-else判断...

    用位运算实现求绝对值-有效避开if-else判断 By SmartPtr(http://www.cppblog.com/SmartPtr/) 一般情况下,如果要我们写一个求绝对值的函数,我们的实现很有 ...

  8. mysql中两个表连接_SQL语句中两个表的连接

    展开全部 一.外连接 1.左连接  left join 或 left outer join SQL语句:select * from student left join score on student ...

  9. access日期如何增加年数_ACCESS支持的时间日期函数

    ACCESS支持的时间日期函数 参考文章一: 找了半天,终于在微软的网站找到了,对于做ACCESS数据库开发人来说还是有点用处的,有时间的话我会把它翻译成中文.(注:其中大部分对于Access是适用了 ...

最新文章

  1. python各个解释器的用途-【Python面试】 说说Python解释器种类以及特点?
  2. Android中shape的使用
  3. 收藏的2个正则html标签剔除方法
  4. wordpress 独立 php,wordpress怎么把所有文章分类单独在一个页面显示
  5. linux 查询内存和核心数,Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...
  6. WIN2003下×××服务器架设攻略
  7. mysql单表备份语句 +多表
  8. ASP.NET Core 2.0 + EF6 + Linux +MySql混搭
  9. midlet_如何在J2ME中创建MIDlet
  10. 让VS2010添加新类时自动添加public关键字(来自dudu博文)
  11. 《Android游戏开发详解》——第2章,第2.10节使用对象
  12. java注解枚举转换器_java – Annotation处理器:从TypeMirror或TypeElement获取所有枚举值...
  13. win10下JDK安装,配置环境变量后出现error:could not open '...jvm.cfg'
  14. Appium自动化测试-iOS
  15. 微信小程序调用域名服务器的服务
  16. 创业公司系统安全的搭建
  17. 2016 杭州云栖大会随笔
  18. 《微观经济学》 第九章
  19. #4508. Triples I
  20. 沙盒和App Group

热门文章

  1. java setquality_Java-在不损失质量的情况下调整图像大小
  2. 软件开发质量的双保险 — 1.设计验证与软件测试
  3. 李国杰(1943-),男,博士,中国工程院院士。
  4. 作者:秦兵(1968-),女,哈尔滨工业大学计算机科学与技术学院教授、博士生导师。...
  5. 【数字逻辑设计】多级组合逻辑电路减少硬件
  6. 【Python】Python语言math模块可用函数
  7. Cacti0.8.8a监控mysql
  8. Linux的环境变量配置
  9. 小波变换和motion信号处理(二)【转载】
  10. Hyper-V常用问题解惑