--@StartDate 本年度第一天
--@EndDate 本年度最后一天
DECLARE @StartDate DATETIME = DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0)
DECLARE @EndDate DATETIME = DATEADD(ms, -3,
DATEADD(yy,
DATEDIFF(yy, 0, GETDATE()) + 1,
0))
IF EXISTS ( SELECT *
FROM tempdb..sysobjects
WHERE id = OBJECT_ID('tempdb..#tb_work') )
BEGIN
DROP TABLE #tb_work
END
CREATE TABLE #tb_work
(
RN INT ,
WorkDate DATE ,--日期
DeWeek NVARCHAR(10) ,--星期几
IsWork NVARCHAR(10) --是否上班
)
INSERT INTO #tb_work
( RN ,
WorkDate ,
DeWeek
)
SELECT ROW_NUMBER() OVER ( ORDER BY CAST(DATEADD(day, number,
@StartDate) AS DATE) ) ,
CAST(DATEADD(day, number, @StartDate) AS DATE) AS dt ,
DATENAME(WEEKDAY,
CAST(DATEADD(day, number, @StartDate) AS DATE))
FROM master.dbo.spt_values
WHERE type = 'P'
AND number <= DATEDIFF(day, @StartDate, @EndDate) SELECT * FROM #tb_work;

下面根据自己数据库配置的情况更新表中的“是否上班”的字段

例如我们有个配置表如下:

我们先把配置表里的节假日信息数据填充到临时表

UPDATE  tw WITH(ROWLOCK)
SET tw.IsWork = TB.IsShipment
FROM #tb_work tw WITH ( ROWLOCK )
INNER JOIN EDI_BaseHoliday tb ON Tw.WorkDate = tb.Holiday

由于我们公司除配置表配置的节假日外,周末是休息的,那么将临时表中没更新“是否工作日”的字段进行update

     UPDATE #tb_work
SET IsWork = ( CASE WHEN DeWeek = '星期六'
OR DeWeek = '星期日' THEN 'N'
ELSE 'Y'
END )
WHERE ISNULL(IsWork, '') = ''

这样本年度的节假日信息就出来了

Sqlserver计算本年度工作日的更多相关文章

  1. SQL计算实际工作日(天)及两个时间(工作日)间隔(小时)!

    Code highlighting produced by Actipro CodeHighlighter (freeware)-->去掉法定节假日(周六,周天)和指定节假日 USE [DBNa ...

  2. sqlserver计算时间差DATEDIFF 函数

    DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 ) ...

  3. sqlserver计算日期

    在网上找到的一篇文章,相当不错哦O(∩_∩)O~ 这是计算一个月第一天的SQL 脚本:  SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --当月的第一 ...

  4. sqlserver 计算数据库时间差

    介绍:datediff(datepart,startdate,enddate) 返回间隔datepart 的数 SELECT datediff(yy,'2010-06-1 10:10',GETDATE ...

  5. sqlserver 计算 百分比

    ,),))+'%' As 百分比 NUMERIC(P,S) P的默认值是:38 S的默认值是:-84~127 numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数, ...

  6. SqlServer计算周岁的函数

    CREATE Function Dbo.GetAge ( @birthday datetime, @now datetime ) Returns int As Begin Declare @Age i ...

  7. Sqlserver 计算两坐标距离函数

    mark if exists (select * from dbo.sysobjects where id = object_id(N'UF_ETL_GetDistance') and xtype i ...

  8. sqlserver 计算同比,环比增长

    /****** Script for SelectTopNRows command from SSMS ******/ SELECT [fdSequenceID] ,[fdInnerTime] ,[f ...

  9. SQLserver技巧

    (1) SQL标记  连接连个表然后用 DATA  COMPAREDATA进行区分select 'DATA ' ,'列名1','列名2','列名3' from  表 union select 'COM ...

随机推荐

  1. LeetCode第20题:有效的括号

    问题描述: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空 ...

  2. 新建用户无法通过SecureSRT进行ssh登录到远程linux (zz)

    root新建了一个普通用户oracle,并且设置了密码:通过SecureSRT连接远程linux,连不上[注:用的是之前新建过的以root为用户名的SecureSRT已有连接,如192.168.1.1 ...

  3. Problem C: [noip2016十连测第五场]travel (构造+贪心)

    题面 https://www.lydsy.com/JudgeOnline/upload/201610/statements(1).pdf 题解 好神仙的贪心-- 首先无解的情况很容易判断,就是\(l= ...

  4. CF70D Professor's task(动态凸包)

    题面 两种操作: 1 往点集S中添加一个点(x,y); 2 询问(x,y)是否在点集S的凸包中. 数据保证至少有一个2操作, 保证刚开始会给出三个1操作, 且这三个操作中的点不共线. 题解 动态凸包板 ...

  5. github上虽然已经有实现好的Char RNN

    前言 学习RNN的时候很多人应该都有看过Andrej Karpathy写的The Unreasonable Effectiveness of Recurrent Neural Networks,使用基 ...

  6. springmvc ajax 简单例子

    1.控制器曾 @Controller public class AjaxController { @RequestMapping("/ajax") public void ajax ...

  7. HTML基本标签问题总结

    一.常见的内联元素和块元素 块级元素: div, form, (列表相关ul,dl,ol,li,) h1-6,p,table 内联元素: a, br, u,(b , em, strong, i,) i ...

  8. Luogu P3391 文艺平衡树(Splay or FHQ Treap)

    这道题要求区间反转...好东西.. 对于Splay:把l-1旋到根,把r+1旋到根的右儿子,这样r+1的左儿子就是整个区间了,然后对这个区间打个tg 注意要插-Inf和Inf到树里面,防止越界,坐标要 ...

  9. HDU6438:Buy and Resell(贪心+数据结构)

    题意 : 给出一些数.你可以从左到右对这些数进行三种操作花费 Ai 买入东西.以 Ai 价格卖出你当前有的东西.或者什么都不做.现在问你可以获取的最大利益是多少 分析:对每一个元素产生的贡献可以先计算 ...

  10. rabbitMq创建和获取消息

    package com.yunda.inter.preload.contextinit; import net.sf.json.JSONObject; import org.apache.common ...