国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

MSSQL 計算兩個日期相差的工作天數的語句

2024-08-31 00:59:12
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:


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
--計算兩個日期相差的工作天數
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --計算的開始日期
@dt_end datetime --計算的結束日期
)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
--計算兩個日期相差的工作天數
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --計算的開始日期
@dt_end datetime --計算的結束日期
)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
*/

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜良县| 包头市| 南投市| 华宁县| 忻州市| 曲松县| 巴南区| 盱眙县| 大足县| 德格县| 博湖县| 河池市| 张家界市| 阿图什市| 昌平区| 鄂托克旗| 车险| 夹江县| 额济纳旗| 刚察县| 五华县| 泾川县| 福建省| 高台县| 武城县| 腾冲县| 太白县| 金华市| 吐鲁番市| 贵溪市| 伊金霍洛旗| 永城市| 永川市| 梅河口市| 鸡东县| 大新县| 泽普县| 霍山县| 高唐县| 仁寿县| 永福县|