Given year, month, day and week number how to find the date?(Sql Server 2005 Set based)

夙愿已清 提交于 2019-12-30 10:58:08

问题


Given year, month, day and week number how to find the date? e.g.

year = 2010  

month = Feb  
day = Wed   
week number = 4, how can I find that the date is 24/02/2010

Thanks


回答1:


try this:

--given info
DECLARE @Year        varchar(4) --= 2010  
DECLARE @MonthName   varchar(10)  --= Feb  
DECLARE @WeekDayday  varchar(10) --= Wed   
DECLARE @WeekNumber  int         --=4
SET @Year        ='2010'
SET @MonthName   ='Feb'  
SET @WeekDayday  ='Wed'   
SET @WeekNumber  =4


--used to solve
DECLARE @StartDate datetime
       ,@EndDate   datetime
       ,@FirstWeek int

SET @StartDate='01 '+@MonthName+' '+@Year
SET @EndDate=@StartDate+38
SET @FirstWeek=DATENAME(week,@StartDate)-1

;with AllDates AS
(
    SELECT @StartDate AS DateOf, DATENAME(week,@StartDate)-@FirstWeek AS WeekOf, DATENAME(weekday,@StartDate) AS WeekDayOf
    UNION ALL
    SELECT DateOf+1, DATENAME(week,DateOf+1)-@FirstWeek AS WeekOf, DATENAME(weekday,DateOf+1) AS WeekDayOf
        FROM AllDates
    WHERE DateOf<@EndDate
)
SELECT
    DateOf ,WeekOf ,WeekDayOf
    FROM AllDates
    WHERE WeekOf=@WeekNumber AND WeekDayOf LIKE @WeekDayday+'%'
    ORDER BY DateOf

OUTPUT

DateOf                  WeekOf      WeekDayOf
----------------------- ----------- ------------------------------
2010-02-24 00:00:00.000 4           Wednesday

(1 row(s) affected)


来源:https://stackoverflow.com/questions/2325939/given-year-month-day-and-week-number-how-to-find-the-datesql-server-2005-set

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!