当前位置:首页 » 编程语言 » sql日期计算工作日
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql日期计算工作日

发布时间: 2022-02-16 21:05:16

sql 查询几个工作日之后的日期

select datediff('2009-1-1', '2008-1-1');

用datediff函数,第一个参数是截止时间,第二个参数是起始时间

不好意思,刚才的是mysql,刚看了下sql的文档发现有点区别- -,sql的话,用下面的形式:
DATEDIFF ( datepart , startdate , enddate )

所以你要求2个日期之间间隔的天数,这样写:

datediff( dd, '2008/1/1', '2009/1/2' )

这里的dd表示计算天数差

② SQL怎么实现所有日期对应的上一工作日和下一工作日

select dateadd( day, -1, getdate() ) 上一工作日,
getdate() 当前工作日,
dateadd(day,1,getdate() ) 下一工作日

③ SQL怎么实现:一个日期加上多少个工作日后是多少号

运行sql语句
update 表名 set rq=rq+3 where gzr="y"
就可以了。

④ sql节假日变第一个工作日

如果你可以获得节假日列表,同样也可以做出来一张全的日历表calendar

日历表设置两列
cdate date, -- 日期
holiday_flag int -- 是否节假日 0/1

主表假设它叫m_tab, 用下面语句获取节假日的下个工作日
把它存为一张临时表,并据此更新m_tab 的 B列即可

SELECT COL_A, MIN(CDATE)
FROM (SELECT COL_A
FROM M_TAB, CALENDAR
WHERE COL_A = CDATE
AND HOLIDAY_FLAG = 1) T,
CALENDAR T1
WHERE COL_A < CDATE
AND HOLIDAY_FLAG = 0
GROUP BY COL_A

⑤ 如何使用sql语句计算工作日(除去周六周日以及法定节假日)

最多只能除去周六周日,法定假日是自己国家规定的,需要单独处理的亲。

⑥ sql:当前日期是本月第几个工作日

create table #Holiday(dateday datetime)

insert into #Holiday values('2016-08-03 15:10:23');
insert into #Holiday values('2016-08-05 15:10:23');
insert into #Holiday values('2016-08-11 15:10:23');
insert into #Holiday values('2016-08-15 15:10:23');

SET DATEFIRST 1

DECLARE @CAL DATETIME --需要计算的日期
SET @CAL ='2016-08-07 15:12:41'

;WITH CTE
AS (
SELECT RW=ROW_NUMBER()OVER(ORDER BY name)
FROM [Master].dbo.spt_values --找一个系统表(记录数超过31的表)
)
,CTE2
AS (
SELECT RW,DT=DATEADD(DAY,RW-DAY(@CAL),@CAL)
FROM CTE
WHERE RW <=DAY(@CAL)
)
,CTE3
AS (
SELECT A.RW,A.DT
,IsHoliday =Case When DATEPART(weekday ,DT) IN(6,7) OR B.dateday is not null THEN 1 ELSE 0 END
FROM CTE2 A
LEFT JOIN #Holiday B ON CONVERT(NVARCHAR(10),A.DT,121) =CONVERT(NVARCHAR(10),B.dateday,121)
)
SELECT Count(1) FROM CTE3
WHERE IsHoliday =0

⑦ sql中怎么统计工作日出勤情况

1.你还得有张日期表,规定一年365天哪天是周末,哪天是节假日,也就是日期类型(其实就是日历)
2.出勤表中日期和日期表中的日期连接根据日期类型就知道哪天是节假日哪天是正常上班时间了
3.旷工天数应该就是出勤表中上班签到时间或者下班签到时间为空的话就算旷工了
4.休息日加班天数就是出勤表和日期表连接,日期类型是休息日,并且上班签到和下班签到时间都不为空了
总之,有张日期表什么都能检索出来了

⑧ 何使用sql语句计算工作日(除去周六周日以及

networkdays(start_date,end_date,holidays)函数是专门用于计算两个日期值之间完整的工作日数值。这个工作日数值将不包括双休日和专门指定的其他各种假期。
点击“工具”菜单中的“加载宏”,找到“分析工具库”,给它一个小勾,再“确定”。原来,这两个函数是嵌于“分析工具库”这个加载宏中的excel扩展函数,而excel在默认状态下是不加载这个加载宏的networkdays(start_date,end_date,holidays)函数是专门用于计算两个日期值之间完整的工作日数值。这个工作日数值将不包括双休日和专门指定的其他各种假期。
点击“工具”菜单中的“加载宏”,找到“分析工具库”,给它一个小勾,再“确定”。原来,这两个函数是嵌于“分析工具库”这个加载宏中的excel扩展函数,而excel在默认状态下是不加载这个加载宏的

⑨ sql如何计算两个日期间的工作日,剔除节假日

select count(distinct day) from tb
where day between day1 and day2 --找出两天内的日子
and weekday(day)<5 --5代表周六,6代表周日,剔除掉

⑩ weekday(date) 后 怎么求 工作日的总天数和休息日的总天数(sql)

DECLARE @date DATE='' DECLARE @date_month_end_day DATE =''SET @date='2016-09-04'SET @date_month_end_day=DATEADD(DAY,-1,DATEADD(MONTH,1,DATEADD(DAY,1-DAY(@date),@date)))--指定日期所在月份剩余天数和剩余周末天数DECLARE @i INT = DAY(DATEADD(DAY,1,DAY(@date)))DECLARE @j INT =0WHILE @i <= DAY(@date_month_end_day)BEGIN IF DATEPART(WEEKDAY,CAST(CAST(YEAR(@date) AS VARCHAR(4))+'-'+CAST(MONTH(@date) AS VARCHAR(2))+'-'+CAST(@i AS VARCHAR(2)) AS DATE)) NOT BETWEEN 2 AND 6 SET @j=@j+1 SET @i=@i+1ENDSELECT @date AS 输入的日期,DATEDIFF(DAY,@date,@date_month_end_day) AS 剩余天数,@j AS 剩余周末天数