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

sql如何计算节假日

发布时间: 2022-10-21 14:12:39

‘壹’ 用sql怎么计算出员工请假的时间,扣除国际法定节假日和周六周日。

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

‘贰’ sql中如何计算得到一段时间内指定日期中有多少个休息日和节假日

这个问题的前题是需要建立一个表(存放休息日和节假日) holidays,里面存放了所有休息日等
SQL中提供了一些日期计算函数如dateadd,可对日期进行递增操作。
基本代码如下:
declare @startdate datetime='2015-9-10'
declare @enddate datetime='2015-10-10'
declare @days int=0
set @startdate=dateadd(day,@startdate,1) --给开始日期加1天
while(@startdate<@enddate) --如果小于结束日期,一直循环处理下面
begin
IF EXISTS (SELECT * FROM holidays WHERE holiday=@startdate) --如果假日表中找到对应日期,则假日数加1
set @days=@days+1

set @startdate=dateadd(day,@startdate,1) --给开始日期加1天
end

select @days --总天数。

‘叁’ 用SQL计算年假的问题

select 员工ID,员工工号,员工姓名,入职日期,
case when DATEDIFF(mm,入职日期,getdate())<=3 then 0
when DATEDIFF(mm,入职日期,'2014-08-01') then a.剩于年假+DATEDIFF(mm,'2014-08-01',getdate())
else DATEDIFF(mm,入职日期,getdate() end as 可休年假

from 人事表 a
left join 截止年假剩余表 b on a.员工ID=b.员工ID

‘肆’ sql中计算周六,周日天数

先建立函数,再执行下面的语句

CREATE FUNCTION getday --
(@datestart datetime,--启始日期
@dateend datetime, --结束日期
@DW VARCHAR(6)) --星期几
RETURNS INT
AS
BEGIN
DECLARE @DAYCOUNT int
SET @DAYCOUNT=0
while @datestart<=@dateend
begin
if datename(dw,@datestart)=@DW
set @DAYCOUNT=@DAYCOUNT+1
SET @DATESTART=DATEADD(DAY,1,@DATESTART)

end
RETURN(@DAYCOUNT)
END

GO

SELECT DBO.GETDAY('2008-01-01','2008-12-31','星期六') AS SATDAY,
DBO.GETDAY('2008-01-01','2008-12-31','星期日') AS SUNDAY

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

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

‘陆’ 用sql语句可以做出判断节假日等的吗

明确不可以的,解决办法:
建立一张表,来存储每年节假日,业务处理的时候来读取这张表再做比对
我就是这样解决的。每年年底只用维护一次这张表即可

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

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

‘捌’ sql server 如何判断节假日

有一张表存放当年的节假日
用的时候用日期与该表关联,关联上的就是节假日

‘玖’ SQL怎么用函数计算年假

没有函数,自己建一个函数算法,入职时间+365天得出 新的日期,把这个日期格式化,取年份+1,再用TO_DATE日期格式化为年初1月1号,就是他应该得到年假的时间。

‘拾’ 用SQL查找一个月内休假的天数和

SELECT CompanyID,事假=SUM(CASE WHEN A='事假' THEN vacationDays ELSE 0 END),

病假=COUNT(CASE WHEN A='病假' THEN vacationDays ELSE 0 END)
FROM 表
GROUP BY CompanyID