2012-06-26 5 views
-1

Можно создать дубликат:
Get dates from a week number in T-SQLДата валютирования с номером недели в SQL

Как получить значение даты, если у меня есть номер недели в SQL Query.

Как если бы я проходил 26, он должен был дать мне 24.06.2012. Если я перехожу 27, я должен получить 07/01/2012

Любая помощь будет оценена :)

Соц

+0

Я предполагаю, что вы также проходит год, или он всегда будет «текущий» год? И вы хотите номер недели ISO, или недели с 1 января? –

+1

Этот вопрос - это просто шум, не называя конкретную СУБД или иным образом указывая цель. Функции даты вряд ли являются агностиками DB. –

+0

@bluefeet: Что заставляет вас принять T-SQL? –

ответ

0

В SQL Server

DECLARE @StartDate DATE, @WeekVal INT 
SET @WeekVal = 26 -- Set the week number 
SET @StartDate = DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0) -- Start of current year 

;WITH cte AS (
    SELECT @StartDate AS DateVal, DATEPART(wk, @StartDate) AS WeekVal, 1 AS RowVal 
    UNION ALL 
    SELECT DATEADD(d, 1, DateVal), DATEPART(wk, DATEADD(d, 1, DateVal)), RowVal + 1 
    FROM cte WHERE RowVal < 365 
) 
SELECT MIN(DateVal) StartOfWeek 
FROM cte 
WHERE WeekVal = @WeekVal 
OPTION (MAXRECURSION 365); 
0
SELECT DATEADD(week, n, '11/25/2011'); 

с п быть номер недели

0

Если это не сработает, попробуйте использовать WEEK() вместо WEEKOFYEAR().

CURDATE() - INTERVAL WEEKDAY(CURDATE()) DAY + INTERVAL (WEEKNO - WEEKOFYEAR(CURDATE())) WEEK 
0

Это дает вам начальную и конечную даты недели. [Для SQL Server]

Declare @week integer set @week = 26 
Declare @Year Integer Set @Year = year(getdate()) 
declare @date datetime 

-- ------------------------------------ 
Set @date = DateAdd(day, 0, 
      DateAdd(month, 0, 
      DateAdd(Year, @Year-1900, 0))) 

set @date = Dateadd(week, @week-1, @date) 

select @date startweek, DATEADD (D, -1 * DatePart (DW, @date) + 7, @date) endweek 

Это был результат от него:

startweek    endweek 
----------------------- ----------------------- 
2012-07-01 00:00:00.000 2012-07-07 00:00:00.000 

(1 row(s) affected) 
Смежные вопросы