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

Откуда: Москва
Сообщений: 1139
День добрый,

есть табличка "MyTable" с полем "MyDate" типа DateTime.
Данные в табличке храняться за определенный месяц (только один!).


Для красивого отчета нужно чтобы там были все даты, с 1 и до 30. Как можно быстро найти все недостающие и добавить?


Пасиба
2 сен 11, 14:18    [11218404]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Т.е. пофиг, что в январе дней 31?
2 сен 11, 14:19    [11218408]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
Гавриленко Сергей Алексеевич
Т.е. пофиг, что в январе дней 31?


нет, не пофиг. Чтобы не забивать мозг уважаемых гуру, я хотел это уже сам додумывать ))).
Если учтете это буду признателен.
2 сен 11, 14:22    [11218426]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
день консервов
Guest
Гавриленко Сергей Алексеевич,

херня, нехватку вернем в составе 30ти февральских
2 сен 11, 14:22    [11218429]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
любитель дат
Guest
А у нас для этого табличка с двумя полями - число и дата. И в ней последовательно целые числа от 1 до 75000 и дата от '19000101' до 2100+ года.
Left join на такую таблицу решает подобные проблемы. Плюс работает как аналог spt_values & type = 'P'
2 сен 11, 14:25    [11218466]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
Gena928
Member

Откуда: Москва
Сообщений: 1139
любитель дат
А у нас для этого табличка с двумя полями - число и дата. И в ней последовательно целые числа от 1 до 75000 и дата от '19000101' до 2100+ года.
Left join на такую таблицу решает подобные проблемы. Плюс работает как аналог spt_values & type = 'P'
Тоже вариант.


Вот что удалось нагуглить
-- Начальная дата
DECLARE @FIRST_DAY_OF_MONTH DATETIME;
SET @FIRST_DAY_OF_MONTH = CONVERT(datetime, '2011-09-01T00:00:00.00', 126);

-- Конечная дата
DECLARE @LAST_DAY_OF_MONTH DATETIME;
SET @LAST_DAY_OF_MONTH = CONVERT(datetime, '2011-09-30T00:00:00.00', 126);


WITH
CTE_Days AS
(
SELECT @FIRST_DAY_OF_MONTH D
UNION ALL

SELECT DATEADD(day, 1, D)
FROM CTE_Days WHERE D < @LAST_DAY_OF_MONTH
)

-- Финальная выборка
SELECT D
FROM CTE_Days
2 сен 11, 15:00    [11218869]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
любитель дат
Guest
Ты только не ленись, потестируй, что быстрее будет - рекурсия, что у тебя в примере или постоянная таблица. Только табличку проиндексируй.
2 сен 11, 15:04    [11218914]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к профи - получить все даты месяца, которых пока нет в табличке (и добавить)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Gena928
Вот что удалось нагуглить
Вот этот код лучьше использовать для заполнения той самой постоянной таблички - календаря. :-)
2 сен 11, 16:15    [11219715]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить