MSSQL 計算兩個日期相差的工作天數(shù)的語句
更新時間:2009年09月29日 22:58:02 作者:
MSSQL計算兩個日期相差的工作天數(shù)的代碼,需要的朋友可以參考下。
復(fù)制代碼 代碼如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_WorkDay]
GO
--計算兩個日期相差的工作天數(shù)
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --計算的開始日期
@dt_end datetime --計算的結(jié)束日期
)RETURNS int
AS
BEGIN
declare @i int
select @i=abs(datediff(dd,@dt_begin,@dt_end))
declare @t table(dt datetime)
if @dt_begin>@dt_end
insert @t select dateadd(dd,number,@dt_end) from master..spt_values
where number<=@i and type='P'
else
insert @t select dateadd(dd,number,@dt_begin) from master..spt_values
where number<=@i and type='P'
return(select count(*) from @t where (datepart(weekday,dt)+@@datefirst-1)%7 between 1 and 5)
END
GO
select dbo.f_WorkDay('2009-10-10','2009-10-1')
/*
-----------
7
(1 個資料列受到影響)
*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_WorkDay]
GO
--計算兩個日期相差的工作天數(shù)
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --計算的開始日期
@dt_end datetime --計算的結(jié)束日期
)RETURNS int
AS
BEGIN
DECLARE @workday int,@i int,@bz bit,@dt datetime
set @workday=0
IF @dt_begin>@dt_end
SELECT @bz=1,@dt=@dt_begin,@dt_begin=@dt_end,@dt_end=@dt
ELSE
SET @bz=0
WHILE @dt_begin<=@dt_end
BEGIN
SELECT @workday=CASE
WHEN (@@DATEFIRST+DATEPART(Weekday,@dt_begin)-1)%7 BETWEEN 1 AND 5
THEN @workday+1 ELSE @workday END,
@dt_begin=@dt_begin+1
END
RETURN(CASE WHEN @bz=1 THEN -@workday ELSE @workday END)
END
GO
select dbo.f_WorkDay('2009-10-10','2009-10-1')
/*
-----------
-7
*/
相關(guān)文章
SQL?Server?字段設(shè)自增的實(shí)現(xiàn)流程
這篇文章主要介紹了SQL?Server?字段設(shè)自增的實(shí)現(xiàn)方法,在本文中,我將先向你展示整個實(shí)現(xiàn)的流程,然后逐步解釋每個步驟需要做什么,并提供相應(yīng)的代碼示例,需要的朋友可以參考下2023-12-12SQL Server本地時間和UTC時間的相互轉(zhuǎn)換實(shí)現(xiàn)代碼
SQL Server 本地時間和UTC時間的相互轉(zhuǎn)換的代碼,需要的朋友可以參考下。2011-07-07SQL Server SQL Agent服務(wù)使用教程小結(jié)
SQL Server SQL Agent服務(wù)使用教程小結(jié)...2007-03-03完美解決MSSQL"以前的某個程序安裝已在安裝計算機(jī)上創(chuàng)建掛起的文件操作"
以前裝過sql server,后來刪掉?,F(xiàn)在重裝,卻出現(xiàn)“以前的某個程序安裝已在安裝計算機(jī)上創(chuàng)建掛起的文件操作。運(yùn)行安裝程序之前必須重新啟動計算機(jī)”錯誤。無法進(jìn)行下去。 現(xiàn)在又遇到了,終于完全搞定.2008-11-11