Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Колонка с датой на каждый месяц  [new]
Колонка с датой на каждый месяц
Guest
Как селектом получить колонку с датой на каждый месяц с 2008 то текущей даты, так:

Jan 2008
Feb 2008
Mar 2008
Apr 2008
May 2008
...
Jan 2010
...
Apr 2010
May 2010
...
Jun 2011
Jul 2011
Aug 2011
11 авг 11, 20:14    [11106456]     Ответить | Цитировать Сообщить модератору
 Re: Колонка с датой на каждый месяц  [new]
alexejs
Member

Откуда:
Сообщений: 147
declare @d0 date = '2008-01-01'
declare @n int = datediff(m, @d0, getdate());
with cte(i) as (select 0 union all select i + 1 from cte where i + 1 <= @n)
select right(convert(char(11), dateadd(m, i, @d0), 106), 8) from cte
12 авг 11, 00:36    [11107034]     Ответить | Цитировать Сообщить модератору
 Re: Колонка с датой на каждый месяц  [new]
Колонка с датой на каждый месяц
Guest
alexejs,

как убрать это ограничение до 100?

declare @d0 date = '1980-01-01'
declare @n int = datediff(m, @d0, getdate());
with cte(i) as (select 0 union all select i + 1 from cte where i + 1 <= @n)
select right(convert(char(11), dateadd(m, i, @d0), 106), 8) from cte 
------------------------*/
Msg 530, Level 16, State 1, Line 3
The statement terminated. The maximum recursion 100 has been exhausted before statement completion.
17 авг 11, 23:54    [11136602]     Ответить | Цитировать Сообщить модератору
 Re: Колонка с датой на каждый месяц  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Колонка с датой на каждый месяц

как убрать это ограничение до 100?

declare @d0 date = '1980-01-01'
declare @n int = datediff(m, @d0, getdate());
with cte(i) as (select 0 union all select i + 1 from cte where i + 1 <= @n)
select right(convert(char(11), dateadd(m, i, @d0), 106), 8) from cte 
option( maxrecursion 0 )
18 авг 11, 06:31    [11136884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить