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

sql计算周末

发布时间: 2022-03-31 23:15:54

‘壹’ 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*
fromthetable
wheredatepart(weekday,thedatefield)in(1,7)

‘叁’ SQL语句怎么查周六周天

比如,2010年07月31日是星期六,你就拿这个日期,减去你要判断的日期,然后在看看结果是否能被7整除就可以了。这样写能查出所有周六的日期:(假设表名为: 表1,有日期字段) select 日期 from 表1 where ( {^2010-07-31} - 日期 )%7=0

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

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

‘伍’ 在sql语句中如何判断周六日

周六是
datepart(week,getdate())=6
周日是
datepart(week,getdate())=7

select case when datepart(week,getdate()) in (6,7) then '休息日' else '工作日' end

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

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

‘柒’ sql计算上周日的日期怎么写

select trunc(next_day(sysdate,'sunday')-7) from al;

‘捌’ SQL统计双休日

select Inspect_name,
A=sum(A), B=sum(B),双休日=sum(case when 双休日 >= 2 then 1 else 0 end)
from
(
select weekly,Inspect_name,
A=sum(A), B=sum(B),双休日=sum(case when 双休日>119 then 1 else 0 end)
from
(
select weekly, Inspect_name, vdatetime2,
sum(case when rank= 'A' then 1 else 0 end) A,
sum(case when rank= 'B' then 1 else 0 end) B,
SUM(CASE WHEN xxx = '休' THEN vtime ELSE 0 END) AS 双休日
from
(
select datepart(wk,(case when convert(varchar(16),vdatetime2,120) between convert(varchar(10),vdatetime2,120)+' 00:00' and convert(varchar(10),vdatetime2,120)+' 05:01' then vdatetime2 -1
else vdatetime2 end)) as weekly,Inspect_name, rank,
(case when convert(varchar(16),vdatetime2,120) between convert(varchar(10),vdatetime2,120)+' 00:00' and convert(varchar(10),vdatetime2,120)+' 05:01' then convert(varchar(10),vdatetime2 -1,120)
else convert(varchar(10),vdatetime2,120) end) as vdatetime2,
( CASE WHEN(datepart(dw, vdatetime2)>=6 AND CONVERT(VARCHAR(8),vdatetime2,108)>'23:00') OR (datepart(dw, vdatetime2)=7 )or (datepart(dw, vdatetime2)=1 ) OR(datepart(dw, vdatetime2)=2 AND CONVERT(VARCHAR(8),vdatetime2,108) <'04:59')THEN '休' ELSE '不休' END) as 'xxx',
vtime
from tb
) t
group by weekly,Inspect_name, vdatetime2
) Tbl
group by weekly,Inspect_name
) tbl1
group by Inspect_name
DATEPART(ww,DATE) 函数计算的周次讲解:

这个函数是以周日为每个周次的第一天,所以你要实现周一为每周的开始必须这样书写才能实现
DATEPART(ww,DATE-1)

‘玖’ sql 请假天数的计算问题 排除节假日和周末

selecta.id,a.姓名,a.状态,开始日期,结束日期,
max(结束日期)-max(开始日期)+1-count(b.workdate)as请假天数
froma
leftjoinbonb.statusin('节假日','周末')
andb.workdatebetweena.开始日期anda.结束日期
groupbya.id,a.姓名,a.状态,开始日期,结束日期