當前位置:首頁 » 編程語言 » sql工作日函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql工作日函數

發布時間: 2022-08-20 05:10:26

sql怎樣獲取工作日

SELECT datename(weekday, getdate())
返回結果是 星期三

② workday函數 sql 怎麼用

WorkDays函數用於獲取給定時間段內的工作天數,工作天數是指除周六日外的天數,不考慮法定假日的情況.
例如:要計算出2010年5月1日至2010年5月31日的全勤天數,可以這樣定義公式:全勤天數=workDays(#2010/5/1#,#2010/5/31#),計算後結果是21.

③ SQL語句計算兩個日期之間有多少個工作日的方法

/*
因為工作中一個奇怪的需求,要用SQL語言計算兩個日期間有多少個工作日。
設定是一個星期有5個工作日,從星期一到星期五
說明:
第一個星期的工作日數:DATEPART(dw, @begdt)-DATEPART(dw, @begdt),最少0天
末一個星期的工作日數:DATEPART(dw, @enddt),最多5天
計算方法:
如果兩個日期處在同一個星期內,直接計算「第一個星期的工作日數」
否則按下面的公式計算
(兩個日期間的總天數 - 第一個星期的天數 - 末一個星期的天數) / 7 * 5
+ 第一個星期的工作日數
+ 末一個星期的工作日數
*/

--計算並返回兩個日期間的工作小時數(工作日*8)按周一到周五計算
--必須先SET DATEFIRST 1
CREATE FUNCTION dbo.CalcWorkHours(@bdate DATETIME, @edate DATETIME)
RETURNS INTEGER
AS BEGIN
DECLARE @hours INTEGER
IF @@DATEFIRST <> 1 OR @bdate > @edate
RETURN -1
SELECT @hours =
--如果終止日期與起始日期在同一個星期內,只需要計算有幾天即可
CASE WHEN DATEPART(wk, @edate-1)-DATEPART(wk,@bdate) = 0 THEN
CASE WHEN DATEPART(dw, @bdate) > 5 THEN 0
WHEN DATEPART(dw, @edate-1) > 5 THEN 6 - DATEPART(dw, @bdate)
ELSE DATEPART(dw, @edate-1) - DATEPART(dw, @bdate) + 1 END
--如果終止日期與起始日期在不同的星期內
--首先計算出除前後兩個星期外完整的星期數 * 5
ELSE (DATEDIFF(dd,@bdate,@edate)
- (8-DATEPART(dw, @bdate))
- DATEPART(dw, @edate-1)) / 7 * 5
--再加上第一個星期里的工作日數
+ CASE WHEN DATEPART(dw, @bdate) < 6 THEN 6 - DATEPART(dw, @bdate)
ELSE 0 END
--加上末一個星期里的工作日數
+ CASE WHEN DATEPART(dw, @edate-1)>5 THEN 5 ELSE DATEPART(dw, @edate-1) END
END * 8
RETURN @hours
END

④ SQL怎麼實現所有日期對應的上一工作日和下一工作日

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

⑤ 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表示計算天數差

⑥ informix中用sql或者存儲過程取上一個工作日的日期(就是除星期六、星期天,國家法定節日外)

在informix的存儲過程中,截取字元串和在informix的sql里一樣,都是用sting[beg,end]這種方式,比如str=abcdefg,想取第4和第5個字元,就用str[4,5],得到「de」。
informix存儲過程中取當天日期用TODAY,在別的文章里說這是個函數,我說還不如算個變數,因為函數的引用是後面要加括弧的,比如getage(id),而這個是不能帶括弧的,直接用TODAY:
date mydate;
mydate=TODAY;

⑦ SQL語句計算兩個日期之間有多少個工作日

EXCEL怎麼自動計算出兩個日期之間相隔幾個工作日的解決方法如下: 1、用公式可以:=NETWORKDAYS(a1,b1,"2012-5-1"), 2、節假日要自己手動列出來, 3、NETWORKDAYS函數要安裝了「分析工具箱」之後才能使用。

⑧ SQL中指定工作時間和非工作時間的語句

--計算工作日的審核數量

select COUNT(*) from #a
where DATEPART(W,date) not in(1,7)--1為星期日7為星期六
and convert(varchar(8),date,114) between '08:30:00' and '17:30:00'
--其他的自己改改

⑨ 如何使用sql語句計算工作日(除去周六周日以及法定節假日)

最多隻能除去周六周日,法定假日是自己國家規定的,需要單獨處理的親。