Sqlserver计算本年度工作日
--@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计算本年度工作日的更多相关文章
- SQL计算实际工作日(天)及两个时间(工作日)间隔(小时)!
Code highlighting produced by Actipro CodeHighlighter (freeware)-->去掉法定节假日(周六,周天)和指定节假日 USE [DBNa ...
- sqlserver计算时间差DATEDIFF 函数
DATEDIFF 函数 [日期和时间] 功能 返回两个日期之间的间隔. 语法 DATEDIFF ( date-part, date-expression-1, date-expression-2 ) ...
- sqlserver计算日期
在网上找到的一篇文章,相当不错哦O(∩_∩)O~ 这是计算一个月第一天的SQL 脚本: SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --当月的第一 ...
- sqlserver 计算数据库时间差
介绍:datediff(datepart,startdate,enddate) 返回间隔datepart 的数 SELECT datediff(yy,'2010-06-1 10:10',GETDATE ...
- sqlserver 计算 百分比
,),))+'%' As 百分比 NUMERIC(P,S) P的默认值是:38 S的默认值是:-84~127 numeric(a,b)函数有两个参数,前面一个为总的位数,后面一个参数是小数点后的位数, ...
- SqlServer计算周岁的函数
CREATE Function Dbo.GetAge ( @birthday datetime, @now datetime ) Returns int As Begin Declare @Age i ...
- Sqlserver 计算两坐标距离函数
mark if exists (select * from dbo.sysobjects where id = object_id(N'UF_ETL_GetDistance') and xtype i ...
- sqlserver 计算同比,环比增长
/****** Script for SelectTopNRows command from SSMS ******/ SELECT [fdSequenceID] ,[fdInnerTime] ,[f ...
- SQLserver技巧
(1) SQL标记 连接连个表然后用 DATA COMPAREDATA进行区分select 'DATA ' ,'列名1','列名2','列名3' from 表 union select 'COM ...
随机推荐
- cc和gcc
cc就是一个链接文件连接到gcc中.只不过cc是unix中常用的编辑工具,而在linux中用的gcc.有一些在unix中写好的程序要放在linux中,所以要指定命令cc为gcc,其实一样.用where ...
- C#----接口与多继承
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 接口 { ...
- 对各种lca算法的理解
1.RMQ+ST 首先注意这个算法的要素:结点编号,dfs序,结点深度. 首先dfs,求出dfs序,同时求出每个结点的深度.然后st算法,维护深度最小的结点编号(dfs序也可以,因为他们俩可以互相转换 ...
- 洛谷P5048 [Ynoi2019模拟赛]Yuno loves sqrt technology III(分块)
传送门 众所周知lxl是个毒瘤,Ynoi道道都是神仙题 用蒲公英那个分块的方法做结果两天没卡过去→_→ 首先我们分块,预处理块与块之间的答案,然后每次询问的时候拆成整块和两边剩下的元素 整块的答案很简 ...
- mui 上拉加载更多的使用
最近工作之余在用mui的框架开发,对mui了解了一些.在真正的app开发项目中,mui上拉加载模块中有两个坑,现在说一下. 1.在函数自己上拉加载行为后的回调函数 该函数是必须要写的,用来写自己的逻辑 ...
- KSOAP2使用注意点汇总
注意返回类型,如果是XML格式,使用 1:SoapObject soapObject = (SoapObject) envelope.getResponse(); 2:SoapObject resul ...
- thinkphp5使用uploadify
uploadify flash版本下载地址:http://www.uploadify.com/wp-content/uploads/files/uploadify.zip 将解压后的文件放入项目公共文 ...
- MQ 重复消费如何解决?
1. 使用幂等操作 乐观锁:每个数据有一个版本号,和当前版本号相同的时候进行更新 去重表(缓存): 唯一性索引,如果已经存在值了就不行更新 2. 算法 两个链表是否相交? 3.redis 集合相交的 ...
- Linux之数据库
crm 1.一定得会用linux发行版 centos 熟悉各种linux命令 2.你的确保linux服务器可以上网 , 一定得有ip地址,且确保dns解析正常 /etc/resolv.conf 3.上 ...
- Django 01 django基本介绍及环境搭建
Django 01 django基本介绍及环境搭建 #http服务器 #用来接收用户请求,并将请求转发给web应用框架进行处理 #Web应用框架 #处理完请求后在发送给http服务器,http服务器在 ...