『壹』 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.狀態,開始日期,結束日期