sql獲取該周的開始結束日期

mssql函數sql

IF EXISTS ( SELECT 1 FROM sysobjects WHERE name = 'fn_GetWeekDate')  
    DROP FUNCTION fn_GetWeekDate  
GO
CREATE function [dbo].fn_GetWeekDate(
    @Year int,    --年份
    @Week int   --第幾周
)
RETURNS @Table TABLE(beginTime datetime,endTime datetime)
AS
BEGIN
    declare @curYearStart datetime
    set @curYearStart = CONVERT(datetime,CONVERT(varchar(4),@Year) + '-01-01')
    declare @tmpdate datetime
    select @tmpdate=dateadd(week,@Week-1,@curYearStart)
    
    insert into @TABLE(beginTime,endTime)
    select 
        case when dateadd(day,-datepart(weekday,@tmpdate)+1,@tmpdate) < @curYearStart then @curYearStart else dateadd(day,-datepart(weekday,@tmpdate)+1,@tmpdate) end,
        dateadd(day,7-datepart(weekday,@tmpdate),@tmpdate)
    
    return
END
go

使用函數

select * from fn_GetWeekDate(2016,2)

結果code

beginTime               endTime
----------------------- -----------------------
2016-01-03 00:00:00.000 2016-01-09 00:00:00.000
相關文章
相關標籤/搜索