① 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 剩餘周末天數