2013-04-11 4 views
0

Я только что создал fiscal_year содержимое таблицыСоздание таблицы Финансовый год

- Week (tinyint 1-53) 
- Start date (date) 
- End date (date) 
- Year (int) 

Я хотел бы сделать SP для вставки даты в эту таблицу с параметрами:

- Year: <2013> 
- Start Year date: <12/30/2012> 
- End Year date: <12/28/2013> 

Тогда он будет генерировать 52 недель соответственно ниже в таблице:

- Week: 1 
- Start date: 12/30/2012 
- End date: 01/05/2013 
- Year 2013 

ответ

4
DECLARE @d DATE = '20121230'; 

;WITH x AS 
(
    SELECT TOP (53) n = ROW_NUMBER() OVER (ORDER BY [object_id])-1 
    FROM sys.all_objects 
    ORDER BY [object_id] 
) 
--INSERT dbo.fiscal_year([week],[start date],[end date],[year]) 
SELECT 
    [week] = n+1, 
    [start date] = DATEADD(WEEK, n, @d), 
    [end date] = DATEADD(DAY, n*7+6,@d), 
    [year] = 2013 
FROM x 
ORDER BY n; 

Когда вы довольны выходом, раскомментируйте INSERT.

+0

@Aaon Bertrand, я продолжаю получать: «Операнд типа clash: int несовместим с датой». Вы знаете, в чем конфликт? – tkvo

+0

@tkvo Хорошо, вы изменили код, который я предоставил в любом случае? Звучит так, как если бы вы изменили код, или ошибка произошла где-то еще ... –

+1

@Aaon Bertrand, я добавил/@ y VACHAR (4), а на линии изменился на [year] =/@ y. Это потому, что мои переменные типы? – tkvo