MSSQL 計(jì)算兩個(gè)日期相差的工作天數(shù)的語(yǔ)句
更新時(shí)間:2009年09月29日 22:58:02 作者:
MSSQL計(jì)算兩個(gè)日期相差的工作天數(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
--計(jì)算兩個(gè)日期相差的工作天數(shù)
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --計(jì)算的開(kāi)始日期
@dt_end datetime --計(jì)算的結(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 個(gè)資料列受到影響)
*/
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
--計(jì)算兩個(gè)日期相差的工作天數(shù)
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --計(jì)算的開(kāi)始日期
@dt_end datetime --計(jì)算的結(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
*/
您可能感興趣的文章:
- SQL Server各種日期計(jì)算方法(收藏)
- SQL Server日期計(jì)算
- SQL語(yǔ)句計(jì)算兩個(gè)日期之間有多少個(gè)工作日的方法
- mysql中常用日期比較與計(jì)算函數(shù)
- MySQL計(jì)算兩個(gè)日期相差的天數(shù)、月數(shù)、年數(shù)
- MySQL的時(shí)間差函數(shù)(TIMESTAMPDIFF、DATEDIFF)、日期轉(zhuǎn)換計(jì)算函數(shù)(date_add、day、date_format、str_to_date)
- mysql日期和時(shí)間的間隔計(jì)算實(shí)例分析
- SQL?Server各種日期時(shí)間計(jì)算語(yǔ)句
- SQL日期的計(jì)算合集
相關(guān)文章
SQL?Server?字段設(shè)自增的實(shí)現(xiàn)流程
這篇文章主要介紹了SQL?Server?字段設(shè)自增的實(shí)現(xiàn)方法,在本文中,我將先向你展示整個(gè)實(shí)現(xiàn)的流程,然后逐步解釋每個(gè)步驟需要做什么,并提供相應(yīng)的代碼示例,需要的朋友可以參考下2023-12-12SQL Server本地時(shí)間和UTC時(shí)間的相互轉(zhuǎn)換實(shí)現(xiàn)代碼
SQL Server 本地時(shí)間和UTC時(shí)間的相互轉(zhuǎn)換的代碼,需要的朋友可以參考下。2011-07-07SQL Server SQL Agent服務(wù)使用教程小結(jié)
SQL Server SQL Agent服務(wù)使用教程小結(jié)...2007-03-03分享Sql Server 存儲(chǔ)過(guò)程使用方法
這篇文章主要介紹了分享Sql Server 存儲(chǔ)過(guò)程使用方法的相關(guān)資料,需要的朋友可以參考下2022-09-09SQL Server 分頁(yè)查詢存儲(chǔ)過(guò)程代碼
SQL Server分頁(yè)查詢存儲(chǔ)過(guò)程,對(duì)于想使用存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)的朋友可以參考下。2010-05-05SQL Server評(píng)估期已過(guò)問(wèn)題的解決方法
這篇文章主要為大家詳細(xì)介紹了SQL Server評(píng)估期已過(guò)問(wèn)題的解決方法,感興趣的小伙伴們可以參考一下2016-03-03完美解決MSSQL"以前的某個(gè)程序安裝已在安裝計(jì)算機(jī)上創(chuàng)建掛起的文件操作"
以前裝過(guò)sql server,后來(lái)刪掉?,F(xiàn)在重裝,卻出現(xiàn)“以前的某個(gè)程序安裝已在安裝計(jì)算機(jī)上創(chuàng)建掛起的文件操作。運(yùn)行安裝程序之前必須重新啟動(dòng)計(jì)算機(jī)”錯(cuò)誤。無(wú)法進(jìn)行下去。 現(xiàn)在又遇到了,終于完全搞定.2008-11-11