Sql server 查询指定时间区间工作日数、休息日数等日期操作

这篇具有很好参考价值的文章主要介绍了Sql server 查询指定时间区间工作日数、休息日数等日期操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、查询指定时间区间的工作日

这个主要难点是法定节假日,国家的法定节假日每年都不一样,还涉及到调休,所以我们设计一个假日表。主要字段有年份,类型(是否调休),假期日期。如下:

CREATE TABLE [dbo].[Holidays](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Holiday] [datetime2](7) NULL,--假期日期
[YearS] [char](4) NULL,--年份
[daytype] [int] NULL--类型
)

 

添加好当年的假期和调休日期

写个方法计算出除开法定假日的工作日

ALTER FUNCTION [dbo].[GetWorkerDays]
(
-- Add the parameters for the function here
 @StartTime DATETIME, -- 起始时间
 @EndTime DATETIME -- 结束时间,查询默认小于此时间
)
RETURNS INT
AS
BEGIN
DECLARE @Total INT;
DECLARE @Temp INT;
DECLARE @Days INT;
DECLARE @Index INT;
SET @Days = DATEDIFF(DAY,@StartTime,@EndTime);
SET @Index = 0;
SET @Temp = 0;
SET @Total = 0;
WHILE @Index < @Days BEGIN
SET @Temp = DatePart(WEEKDAY,DATEADD(DAY,@Index,@StartTime));
IF @Temp > 1 AND @Temp < 7 BEGIN
SET @Total = @Total + 1;
END
SET @Index = @Index + 1;
END
RETURN ISNULL(@Total,0)
END

 

执行这个表值函数后加上调休日和减去法定假日就是工作日了,大家可以再写一个存储过程。

2,计算指定日期段的休息日

这个跟那个相反,就是星期天加上法定假日在减去调休日

我们写一个函数

ALTER FUNCTION GetRestDays
(
@StartTime DATETIME2,
@EndTime DATETIME2
)
RETURNS INT
AS
BEGIN
DECLARE @LegalRest INT --法定假期
DECLARE @AdjustmentDay INT--调休上班时间
DECLARE @SurplusDay INT --剩余工作日
DECLARE @CountDay INT --总共天数
SELECT @LegalRest=COUNT(0) FROM dbo.Holidays WHERE daytype=1 AND  YearS=YEAR(GETDATE()) AND MONTH(Holiday)=MONTH(GETDATE())
AND Holiday>=@StartTime AND Holiday<=@EndTime
SELECT  @AdjustmentDay=COUNT(0) FROM dbo.Holidays WHERE daytype=2 AND  YearS=YEAR(GETDATE()) AND MONTH(Holiday)=MONTH(GETDATE())
AND Holiday>=@StartTime AND Holiday<=@EndTime
 SET @SurplusDay= [dbo].[GetWorkerDays](@StartTime,DATEADD(DAY,1,@EndTime))--剩余工作日
 SELECT @CountDay=COUNT(0) FROM dbo.TimeSpanDays(@StartTime ,DATEADD(DAY,1,@EndTime))  --总共天数  计算出 时间段总共天数
 return @CountDay-@SurplusDay+@LegalRest-@AdjustmentDay
END

 

3、计算当前前月初日期和月末日期

月初

简单:

SELECT  CONVERT(VARCHAR(7),GETDATE(),120)+'-01'

月末日期

这个也简单简单:就是月第一天加一月再减去一天文章来源地址https://www.toymoban.com/news/detail-424170.html

SELECT   DATEADD(DAY,-1, DATEADD(MONTH,1, CONVERT(VARCHAR(7),GETDATE(),120)+'-01'))

到了这里,关于Sql server 查询指定时间区间工作日数、休息日数等日期操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux查询指定时间段的日志

    Linux查询指定时间段的日志 可以通过grep或者sed命令查指定时间段日志 1.命令 命令: 2.举例 【例】查询今天10月20日10点30分的这一分钟的日志 第一步,可以先看下日志文件的格式 第二步,通过grep提取和匹配符合条件的字符串行 或者用sed查询 注意事项

    2024年02月12日
    浏览(51)
  • Linux查询提取指定时间段的日志

    在 Linux 中,可以使用 sed 、 awk 命令快速提取一个日志文件中指定时间段之间的日志信息。下面提供两种方法: 首先,假设要提取的日志文件为 log.txt 。假设要提取 2023 年 06 月 01 日 00:00:00 到 2023 年 06 月 01 日 01:00:00 之间的日志信息,可以使用以下命令: 该命令的解释如下:

    2024年02月12日
    浏览(51)
  • 基于elementui的工作日,休息日的日历组件

    在这里插入图片描述,如图要求做一个可以显示休息日和工作日的组件。我基于element-ui已有的组件进行修改。 以”日“为基本单位,基础的日期选择控件。 使用element-ui的国际化功能将星期一到星期日设置为中文 在vue组件里面引入el-date-picker 得到中文配置的容=日期选择器

    2024年02月02日
    浏览(39)
  • vue2实现日历12个月平铺,显示工作日休息日

    参考:https://blog.csdn.net/weixin_40292154/article/details/125312368 1.组件DateCalendar.vue,sass改为less 2.util.js 3.父组件引用 效果: 样式之后再调~~ 参考文章开头的链接,实现按年度进行12个月的日历平铺,并且按数组给值标记工作日和休息日。

    2024年01月20日
    浏览(48)
  • SQL Server 连接查询和子查询

    提示: 利用单表简单查询和多表高级查询技能,并且根据查询要求灵活使用内连接查询、外连接查询或子查询等。同时还利用内连接查询的两种格式、三种外连接查询语法格式和子查询的语法格式。 内连接查询(不同表之间查询) 自身连接查询 使用第二种格式实现内连接查询

    2023年04月12日
    浏览(39)
  • SQL Server各种时间计算

    一、时间计算 结果: 二、获取整点时间 结果: 三、获取年月日、时分秒 结果: 四、计算两个日期之间相差多少年月日、时分秒 结果:

    2024年02月13日
    浏览(30)
  • Windows server 2016——SQL server T-SQL查询语句

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。  公众号: 网络豆  座右铭:低头赶路,敬事如仪 个人主页: 网络豆的主页​​​​​ 目录 写在前面 介绍 一.SQL简介 1.SQL和T-SQL 2.T-SQL的组成 二.使用T-SQL语句操作数据表 1.插入数据 2.更新数据 ​编

    2024年02月09日
    浏览(52)
  • SQL Server的子查询

    子查询是嵌套在SELECT、INSERT、UPDATE、DELETE语句中或另一个子查询中的查询。 可以在允许表达式的任何位置使用子查询。 示例: 子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。 许多包含子查询的 Transact-SQL 语句也可以表述为联接。其他问

    2023年04月13日
    浏览(42)
  • SQL Server 数据查询

    KC表数据: XS表数据: XS_KC表数据: (1)在KC表中查询学分低于三分的课程信息,并按课程号升序排列 (2)在XS_KC表中按学号分组汇总学生的平均分,并按平均分的降序排列 (3)在XS_KC表中查询至少选修了2门课程的学生学号和姓名 (4)查询成绩不及格的学生的基本信息 方法1 方法2(子

    2023年04月19日
    浏览(55)
  • SQL server 查询语句大全

    在 SQL Server 中,查询语句是最常用的语句类型,用于从数据库中提取有用的信息。SQL Server 中常用的查询语句有 SELECT、FROM、WHERE、GROUP BY、HAVING 和 ORDER BY。 1. SELECT SELECT 语句用于从表中选取数据进行查询,语法如下: ```sql SELECT column1, column2, column3, ...   FROM table_name; ``` 在这个

    2024年02月13日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包