计算两个日期相差的工作天数,过滤了周末双休天数
2013-11-27 17:16
801 查看
CREATE FUNCTION [dbo].[gdcfn_GetWorkDay](
@dt_begin datetime, --计算的开始日期
@dt_end datetime --计算的结束日期
)RETURNS int
AS
BEGIN
set @dt_begin=convert(varchar(10),@dt_begin,120)
set @dt_end=convert(varchar(10),@dt_end,120)
declare @dayNum int
if @dt_begin is null or @dt_begin<@dt_end or @dt_end is null begin set @dayNum=null end
set @dayNum=0
declare @tempDate datetime
set @tempDate=dateadd(dd,1,@dt_begin)
while @tempDate<=@dt_end
begin
if datepart(dw,@tempDate) not in(1,7) begin
set @dayNum=@dayNum+1
end
set @tempDate=dateadd(dd,1,@tempDate)
end
--如果结束日期是周末,并且天数差是0的时候就算一天
if @dayNum=0 and datepart(dw,@dt_end) in(1,7) begin
set @dayNum=@dayNum+1
end
return @dayNum
end
@dt_begin datetime, --计算的开始日期
@dt_end datetime --计算的结束日期
)RETURNS int
AS
BEGIN
set @dt_begin=convert(varchar(10),@dt_begin,120)
set @dt_end=convert(varchar(10),@dt_end,120)
declare @dayNum int
if @dt_begin is null or @dt_begin<@dt_end or @dt_end is null begin set @dayNum=null end
set @dayNum=0
declare @tempDate datetime
set @tempDate=dateadd(dd,1,@dt_begin)
while @tempDate<=@dt_end
begin
if datepart(dw,@tempDate) not in(1,7) begin
set @dayNum=@dayNum+1
end
set @tempDate=dateadd(dd,1,@tempDate)
end
--如果结束日期是周末,并且天数差是0的时候就算一天
if @dayNum=0 and datepart(dw,@dt_end) in(1,7) begin
set @dayNum=@dayNum+1
end
return @dayNum
end
相关文章推荐
- 计算两个日期相差的工作小时数,过滤了周末双休小时数
- 计算两个日期之间相差的工作天数
- MSSQL 计算两个日期相差的工作天数的语句
- SQL计算两个日期之间相差的工作天数
- 计算两个日期相差的工作天数
- MSSQL计算两个日期相差的工作天数
- JavaScript计算两个日期之间相差的天数
- 计算两个日期相差天数:
- 如何计算两个日期之间相差天数
- flex计算两个日期之间相差的天数
- Java 计算两个日期相差的天数
- 计算两个日期之间相差的天数
- 计算两个日期之间周末天数in php
- 分享PHP计算两个日期相差天数的代码
- SQL计算两个日期之间的工作天数(除过周六日的天数)
- java计算两个日期之间相差的天数
- 如何计算两个日期之间相差的天数?
- SQL计算两个日期之间的工作天数
- 计算两个日期之间相差的天数