2014-02-22 40 views
4

我有一週的日數,以及今年的週數。如何我可以在SQL計算當日的日期。對於2月22日的Example.the天數-2014是第7和它是year.Now的第8周我怎麼能計算日期從這個information.Its urgent.Please help.I回來想查詢。日期從週數和日在SQL Server 2012中

+0

我建議找出WEEK0 = 1/1/YYYY(不管你一年),並找到DAY0 = 1/1/YYYY。並計算Julian0 =(WEEK0 * 7)+ DAY0。然後計算所述DAYOFYEAR =(8 * 7)+ 7.最後YourDate =使用DateAdd(1/1/YYYY + DAYOFYEAR = Julian0)。 – donPablo

+0

whic天是第一週,如果是satuday是7 – adopilot

+0

adopilot試試這個功能。其讓你clear..select DATEPART(DW,GETDATE()) –

回答

1

這裏是我的verison

create FUNCTION date_from_week_number_day 
(
    @year int = 2014 
    ,@weeknumber int = 8 
    ,@day int = 7 


) 
RETURNS date 
AS 
BEGIN 


    declare 
     @date date 
     ,@first_date_of_year date 


set @first_date_of_year = CONVERT(date,cast(@year as varchar(4))+'.1.1') --First calculate first day of year 


set @date = dateadd(dd,@day -- we add days acoring of day of week 
         ,dateadd(dd,-1*DATEPART(WEEKDAY,@first_date_of_year) --first day of year is not first day of week so we go back days how day has pass 
          , DATEADD(WEEK,@weeknumber-1,@first_date_of_year) --1. we go to week before last 
          ) 
         ) 

return @date 

END 

,你可以調用這個

SET DATEFIRST 7 
select dbo.date_from_week_number_day(2014,8,7) 
0

試試這個

CREATE FUNCTION dbo.Date_From_WN_DN (@YearNum int,@WeekNum int,@DayNum int) 
     RETURNS Date AS 
    BEGIN 
     DECLARE @FirstDayYear As Date; 
     SET @FirstDayYear='01/01/' + CAST(@YearNum As varchar) 
     RETURN dateadd(d,((@DayNum)-datepart(weekday,@FirstDayYear)),dateadd(week, @WeekNum-1,@FirstDayYear)) 
    END 


    SET DATEFIRST 7 
    SELECT dbo.DEV_VW_WeekSerial (2014,8,7) 

O/P

enter image description here

相關問題