首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在工作日SQL Server的营业时间内计算两个日期之间的差值?

在工作日SQL Server的营业时间内计算两个日期之间的差值,可以采取以下步骤:

  1. 首先,确定工作日和非工作日的定义和时间范围。通常,工作日是指周一至周五的工作时间,非工作日是指周六、周日以及节假日。
  2. 然后,计算两个日期之间的总天数。可以使用DATEDIFF函数来计算两个日期之间的天数差值,例如:DATEDIFF(day, @StartDate, @EndDate)。
  3. 接下来,计算非工作日的天数。可以使用自定义的函数或者表来存储节假日的信息,然后使用COUNT函数来计算非工作日的天数。
  4. 最后,计算工作日的天数。将总天数减去非工作日的天数,即可得到工作日的天数差值。

这个计算过程可以在SQL Server中以存储过程或者脚本的形式进行。以下是一个示例的存储过程:

代码语言:txt
复制
CREATE PROCEDURE CalculateWorkingDays
    @StartDate DATE,
    @EndDate DATE
AS
BEGIN
    -- 计算总天数
    DECLARE @TotalDays INT = DATEDIFF(day, @StartDate, @EndDate)

    -- 计算非工作日的天数
    DECLARE @Holidays INT
    SELECT @Holidays = COUNT(*) FROM HolidayTable WHERE HolidayDate BETWEEN @StartDate AND @EndDate

    -- 计算工作日的天数
    DECLARE @WorkingDays INT = @TotalDays - @Holidays

    -- 输出结果
    SELECT @WorkingDays AS WorkingDays
END

在上述示例中,假设有一张名为"HolidayTable"的表用于存储节假日的信息,其中包含"HolidayDate"列。可以根据实际情况修改表的结构和数据。

这样,在调用存储过程时,传入起始日期和结束日期作为参数,即可得到工作日的天数差值。例如:

代码语言:txt
复制
EXEC CalculateWorkingDays '2022-01-01', '2022-01-31'

注意:以上示例仅供参考,实际应用中需要根据业务需求进行适当调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • ISA95.PART4翻译整理 制造运营管理对象和属性(未完)

    ISA 95.00.04 4.2 制造运营管理活动之间信息交换网络 6. 工作定义信息 Work definition information 6.1....10 工作母版能力信息 Work master capability information 10.1 工作母版能力模型 特定时间内,给定工作母版所需资源逻辑分组,这些资源状态,数量等信息被定义为工作母版能力...,起始和截止日期时间,次数。...这些条目可用于生成一个特定日期时间工作日历。 工作日历模型定义了用于交换规则(工作日历定义)或具体日期日历(工作日历)交换格式。...工作日历信息可用于不同目的,例如: 分配人员到不同班次,并跟踪他们工作时间和班次; 计算并跟踪运营业绩 详细运营计划 决策计划设备生产和非生产时间,并用于运营业计算 统计人员工时 比较实际生产时间和计划生产时间

    64810

    SQL函数 DATEDIFF

    SQL函数 DATEDIFF 日期/时间函数,返回两个日期之间指定日期部分整数差。...从enddate中减去startdate,以确定两个日期之间日期部分间隔。 描述 DATEDIFF函数返回两个指定日期之间指定日期部分差整数。日期范围从开始日期开始,到结束日期结束。...DATEDIFF返回startdate和enddate之间指定单位总数。例如,两个日期时间值之间分钟数计算日期部分和时间部分,并为每一天差异增加1440分钟。...例如,指定连续年份任意两个日期(例如2018-09-23和2019-01-01)返回年份DATEDIFF为1,而不管这两个日期之间实际持续时间是大于还是小于365天。...同样,12:23:59和12:24:05之间分钟数是1,尽管实际上只有6秒将两个值分开。 请注意,DATEDIFF是为Sybase和Microsoft SQL Server兼容性而提供

    3.4K40

    Python生成中国节假日工作表,快速给数据库内生成工作日

    有时候,我们处理一些业务,比如:计算员工请假时间工作日;就需要数据库内存在一张工作日历,记录调休和节假日。实际上,是有很多公共接口。...但是很多情况下,我们需要在内网环境下使用,这个时候就需要在数据库内生成工作日历表,如果使用频繁,甚至考虑缓存到中间件Redis内。那么,如何在数据库内生成一个工作日历表呢?...,内部主要用两个部分:holidays: 放假日期;workdays: 因节日而调休日期。...使其生成SQL脚本。数据库设计既然需要一张表来存储工作日历,那么数据库表应该如何设计?...因为需要一次性生成一年工作日历,所以我们需要先获取一年数据日期,之后遍历数据日期,使用LKI/chinese-calendar去解析每次数据日期,将返回结果包转为CSV或者拼接SQL

    32711

    各类SQL日期时间处理方法

    使用SQL多了不知道大家有没这样困惑,SQL语法大方面是一致SELECT,JOIN,GROUP BY等,但是在一些函数或某些特定功能处理上还是有很大差异,而这些差异经常给大家带来困惑,尤其是一个新手从一种...:'1522128932' 三、计算两个时间相差天数 hive:selecct datediff(date1,date2) from table1; --计算两个日期之间天数差值,是拿date1日期...“减去”date2日期,即使date1和date2精确到粒度不一致,date1到天,date2到分钟结果仍然只是天粒度差值。...“天”差值、“小时”差值等,另外需要把date1和date2转为date类型,否则SQL会报错。...hive保持一致 mysql:selecct datediff(date1,date2) from table1; --基本与hive用法一致 说明:有了以上两步日期和时间戳之间互转,这里求两个日期时间差值就相对来说比较简单了

    4.5K32

    【案例】东北证券——智能报表系统建设

    但是,因为多种原因,两个系统并未采用统一数据库,报表数据查询基于oracle数据库,数据填报则基于SQL server数据库。数据同步通过ETL工具,每天晚上定时将数据助手库数据抽取至数据平台库。...总之,两个不同系统和两个不同数据库,让业务人员在使用上费时费力,让IT人员在后台管理上劳心劳力。 东北证券有着近百家营业网点,分布于全国各地,公司总部对各营业网点任务数据下达需求越发强烈。...公司网络金融部根据各营业网点去年开户数量、导流数量,再乘以一定比例,即定义出各营业网点今年需推广安装融e通App任务数据。...由于总部下达各项任务数据计算公式每年都会有变动,所以采用通过数据填报方式导入数据,而不是在数据平台中通过sql语言编写。...公司总部,经纪业务管理部、零售客户部、机构业务部、网络金融部等等,查询公司经营数据为全体营业网点数据。公司各营业网点则只能查询自家经营数据。

    1.6K70

    【MySQL高级】Mysql并发参数调整及常用SQL技巧

    Mysql并发参数调整 从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库并发性能。...如果需要数据库在较短时间内处理大量连接请求, 可以考虑适当增大back_log 值。...两个函数作用相同,返回当前系统日期值 CURTIME 和 CURRENT_TIME 两个函数作用相同,返回当前系统时间值 NOW 和 SYSDATE 两个函数作用相同,返回当前系统日期和时间值 MONTH...,都是向日期添加指定时间间隔 DATE_SUB 和 SUBDATE 两个函数功能相同,都是向日期减去指定时间间隔 ADDTIME 时间加法运算,在原始时间上添加指定时间 SUBTIME 时间减法运算...,在原始时间上减去指定时间 DATEDIFF 获取两个日期之间间隔,返回参数 1 减去参数 2 值 DATE_FORMAT 格式化指定日期,根据参数返回指定格式值 WEEKDAY 获取指定日期在一周内对应工作日索引

    2K30

    软件测试|数据处理神器pandas教程(八)

    时间序列 顾名思义,时间序列(time series),就是由时间构成序列,它指的是在一定时间内按照时间顺序测量某个变量取值序列,比如一天内温度会随时间而发生变化,或者股票价格会随着时间不断波动...,我们一般会遇到两个问题,第一,如何创建时间序列;第二,如何更改已生成时间序列频率。...微妙 BQ 工作季度结束频率 N 纳秒 QS 季度开始频率 时间周期计算 周期计算,指的是对时间周期进行算术运算,所有的操作将在“频率”基础上执行。...bdate_range() 表示创建工作日日期范围,它与 date_range() 不同,它不包括周六、周日。...注:中国传统节假日并没有默认为休息日,所以输出还是按照是否为周六周日判定是否为工作日

    1.3K20

    Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、可视化

    年9月30日06:00:00,2019年9月30日上午6:00 持续时间 两个瞬时之间差异 2天,4小时,10秒 时间段 时间分组 2019第3季度,一月 PythonDatetime模块 datetime...两个日期、datetimes 或 times 之间最小差值 日期/日期时间 object.year 返回年份 object.month 返回月份(1 - 12) object.day 返回日期(...别名 别名 描述 B 工作日频率 C 定制工作日频率 D 日历日频率 W 周频率 M 月底频率 SM 半月末频率(每月15日和月末) BM 工作日月末频率 CBM 定制工作日月末频率 MS 月初频率...SMS 半月初频率(每月1日和15日) BMS 工作日月初频率 CBMS 定制工作日月初频率 Q 季末频率 BQ 工作日季末频率 QS 季初频率 BQS 工作日季初频率 A, Y 年末频率 BA,...在交易中一个典型例子是使用50天和200天移动平均线来买入和卖出资产。 让我们计算苹果公司这些指标。请注意,在计算滚动均值之前,我们需要有50天数据。

    60400

    盘一盘 Python 特别篇 19 - 天数计数|年限

    在金融产品估值时,细节最多就是如何生成日期和年限了,最核心细节如下: 支付日通常不会落在周末和公共假期上,落到,那么根据“顺延”或“修正顺延”到后一个工作日,或者“提前”或“修正提前”到前一个工作日...工作日惯例解决这个问题。 两个日期之间计数有对相应惯例,比如“Actual/365”计算天数就是两个日期之间实际天数,而30/360“”有着特殊算法。 日期计数惯例解决这个问题。...2017年4月28日 (星期五) 1.2 全连接层 年限是将两个日期天数按某种规则转化成年数,而日期计数惯例就是这个规则。...Act/Act 这两个惯例来自 2006 年 ISDA 文件里面的 4.16(b),计算年限方法为“非闰年里天数/365 + 闰年里天数/366”。这里天数计算包括起始日不包括结束日。...Bus/252 年限等于包括起始日不包括结束日之间工作日天数除以 252。该惯例用于巴西市场。 下图给出基本日期计数惯例总结: ?

    1.5K20

    sql 时间转字符串_字符串举例

    1442 3:47:31:410PM 二、字符串转日期时间 附: Sql Server日期与时间函数: 当前系统日期、时间 select getdate() dateadd 在向指定日期加上一段时间基础上...,返回新 datetime 值 例如:向日期加上2天 select dateadd(day,2,‘2004-10-15’) –返回:2004-10-17 00:00:00.000 datediff 返回跨两个指定日期日期和时间边界数...两个日期之间差值 date2-date1 DateAdd (interval,number,date) 以interval指定方式,加上number之后日期 DatePart (interval,...SQL Server日期函数举例: 1.GetDate() 用于sql server :select GetDate() 2.DateDiff(‘s’,‘2005-07-20’,‘2005-7-25 22...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.6K20

    还在苦恼MySQL如何根据日期精确计算年龄?看这一篇,就够了!

    使用SQL语句计算年龄,在事务处理和日期计算中,较为常见。MySQL提供了许多日期函数,可以自由发挥。本文中看我们尝试 SQL 年龄计算 —— 组件 MySQL没有开箱即用工具,用于计算年龄。...MySQL已经提供函数,下面介绍一下: CURDATE() – 返回当前日期 TIMESTAMPDIFF() – 计算时间差,差值单位自定义 这俩函数就够了,日期差,获取年差值,月差值,或者其他。...修改一下参数: SELECT TIMESTAMPDIFF(DAY, '2018-01-20', '2019-01-21'); 返回是 366 SQL 计算年龄 —— 组合起来 学习了两个函数使用方法...MySQL 计算年龄 —— 提高精度 上面的式子,计算出了正确年龄。但是如果日期格式不完整,缺少月份,或者日期,都不能计算出来结果。 ? 对应同一个月份,或者同一年日期计算差值,年总是=0。...以此类推: TIMESTAMPDIFF(DAY, dob_field, CURDATE()) 计算两个日期天数。 举一反三,我们可以相应计算日期月份,和天数。

    8.8K41

    sql 时间总结

    (本贴是从网上找了几个比较好帖子总合了一下并做了一下修改) 下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。...DateDiff (interval,date1,date2) 以interval 指定方式,返回date2 与date1两个日期之间差值 date2-date1 DateAdd (interval...下一个执行函数DATEDIFF(mm,0,getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间月数。...-5-6 {0:D}大型:2005年5月6日 {0:f}完整型 2 当前时间获取 DateTime.Now.ToShortDateString 3 取值中格式化 SQL Server里面可能经常会用到日期格式转换方法...-5-6 {0:D}大型:2005年5月6日 {0:f}完整型 2 当前时间获取 DateTime.Now.ToShortDateString 3 取值中格式化 SQL Server里面可能经常会用到日期格式转换方法

    1.9K90

    TimeHelper 轻量级PHP日期时间类库

    TimeHelper 是一个简单易用PHP时间日期助手类库,可以快速实现常用时间日期操作,比如获取指定时间秒数,获取友好时间格式,判断时间范围,计算两个时间相差值,返回N小时/天/星期/月/年前或者后时间戳等等...计算两个时间相差值 如果只传入一个参数,则与当前时间比较 //计算两个日期相差天数 TimeHelper::diffDays('2022-4-10 23:01:11','Apr 11, 2020');...//计算两个日期相差周数 TimeHelper::diffWeeks('2022-4-10 23:01:11'); //计算两个日期相差月数 TimeHelper::diffMonths(1586451741...,'Apr 11, 2020'); //计算两个日期相差年数 TimeHelper::diffYears('2022-4-10 23:01:11','Apr 11, 2020'); //比较两个时间大小...use zjkal\ChinaHoliday; //判断指定日期是否为国内工作日 ChinaHoliday::isWorkday('2023-01-23'); //判断指定日期是否为国内节假日

    18210

    Net和T-sql日期函数操作

    net中日期函数代码:  代码 数据库日期函数: 函数 参数/功能 GetDate( ) 返回系统目前日期与时间 DateDiff (interval,date1,date2) 以interval...指定方式,返回date2 与date1两个日期之间差值 date2-date1 DateAdd (interval,number,date) 以interval指定方式,加上number之后日期...DatePart (interval,date) 返回日期date中,interval指定部分所对应整数值 DateName (interval,date) 返回日期date中,interval指定部分所对应字符串名称...参数 interval设定值如下: 值 缩 写(Sql Server) (Access 和 ASP) 说明 Year Yy yyyy 年 1753 ~ 9999 Quarter Qq q 季...1 ~ 4 Month Mm m 月1 ~ 12 Day of year Dy y 一年日数,一年中第几日 1-366 Day Dd d 日,1-31 Weekday Dw w 一周日数,一周中第几日

    1.3K60

    一文搞懂连续问题

    ID,是指添加一列为group_id, 连续行分配相同ID值,该ID在不同连续组之间不同。...计算连续分组赋值相同分组ID判断连续条件,有两种处理思路:1.双排序差值法;2.累积求和法;1.双排序差值法双排序差值法是指对一列连续数据得到排序1,对符合条件数据进行排序到排序2,两列排序差值作为分组...ID方法.如果实际数据连续,则差值不变,如果间断则差值变化,从而保证每个连续段有唯一组id.我们以腾讯大数据面试SQL-连续登陆超过N天用户 为例,查询分组ID逻辑SQL如下select user_id...(具体是什么日期无所谓,只是以一个固定日期为锚点)差得到排序值1(date_diff),然后使用row_number()函数根据用户分组,按照登陆日期进行排序得到排序值2(row_num),然后用两个排序值做差...在得到连续分组ID之后 需要计算出连续登陆最早和最晚日期,然后差值计算,还需要考虑到差值与登陆天数差天细节。总结通过以上面试题目可以看出,只要找到连续分组ID,所以题目都可以迎刃而解。

    4500

    高级SQL查询技巧——利用SQL改善和增强你数据

    一、计算滚动平均 使用时间序列数据时,为观察值计算滚动平均值或附加历史值可能会有所帮助。假设我想获取一家公司每天售出小部件数量。...我可能想包括7天移动平均线,或附上上周出售工作日小部件,以查看业务与上周相比表现。我可以通过将数据集连接到自身上,并使用日期列上操作来选择单个值或观察范围来做到这一点。...下面的示例将表B联接到表A上,以将日期回溯7天以获取前一个工作日小部件销售: select a.date , a.total_widgets_sold , b.total_widgets_sold...通过使用伪代码对逻辑规则进行周到设计可以帮助避免由于不正确/不一致规则而导致错误。了解如何在SQL中编码嵌套逻辑对于释放数据中潜力至关重要。...有针对性营销活动正用于尝试提高普通购物者销售额(Marketing已将平均购物者确定为消费在 100- 200之间的人)。

    5.8K30
    领券