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

Откуда:
Сообщений: 1169
Есть интервал от Дата1 до Дата2
Надо получить табличку с датами в виде: 01-01-2013 и т.д.
Т.е. для каждого месяца надо вставить дату 1-го числа
Без использования курсоров
Может кто-нибудь сталкивался?
27 июн 13, 21:18    [14494308]     Ответить | Цитировать Сообщить модератору
 Re: Получить таблицу с датами  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31869
izoldov-roskini
Т.е. для каждого месяца надо вставить дату 1-го числа
Без использования курсоров
Может кто-нибудь сталкивался?
Обычно делают таблицу-календарь, тогда такие запросы пишутся легко.
27 июн 13, 21:59    [14494440]     Ответить | Цитировать Сообщить модератору
 Re: Получить таблицу с датами  [new]
izoldov-roskini
Member

Откуда:
Сообщений: 1169
Ну так здоровая таблица получится
27 июн 13, 22:05    [14494464]     Ответить | Цитировать Сообщить модератору
 Re: Получить таблицу с датами  [new]
djfweijfhiwe
Guest
;with
l0(n) as (select 1 union all select 1),
l1(n) as (select 1 from l0 t1 cross join l0 t2),
l2(n) as (select 1 from l1 t1 cross join l1 t2),
l3(n) as (select 1 from l2 t1 cross join l2 t2),
l4(n) as (select 1 from l3 t1 cross join l3 t2),
l5(n) as (select 1 from l4 t1 cross join l4 t2),
r(n) as (select row_number() over(order by (select 0)) from l5)
select dateadd(m, n - 1, '20010101') dt
from r
where n <= 50;
27 июн 13, 22:20    [14494512]     Ответить | Цитировать Сообщить модератору
 Re: Получить таблицу с датами  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
izoldov-roskini
Ну так здоровая таблица получится
Кхм, а вы считали?
10 лет - 3 тысячи строк. Или ваш продукт будет работать миллион лет?
27 июн 13, 22:34    [14494573]     Ответить | Цитировать Сообщить модератору
 Re: Получить таблицу с датами  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31869
izoldov-roskini
Ну так здоровая таблица получится
В смысле?
На 1000 лет 365000 строк, мельше полутора мегабайт, то есть совсем микроскопическая.

Альтернатива - делать такую таблицу в каждом запросе, как выше предложил djfweijfhiwe
Можно и так, такое решение принимают, если по политическим мотивам нельзя создавать новые таблицы в базе.
28 июн 13, 11:06    [14496218]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить