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

Откуда: Москва
Сообщений: 470
Здравствуйте,
не могу решить задачу: нужно вывести список всех дат в диапазоне 1 число прошлого месяца от текущей даты - последнее число следующего месяца от текущей даты
как это реализовать на SQL Server?
5 авг 09, 13:54    [7500536]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
берете таблицу календаря и делаете из нее select дат, входящих в нужный Вам диапазон
5 авг 09, 14:00    [7500572]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Паганель
берете таблицу календаря и делаете из нее select дат, входящих в нужный Вам диапазон


у меня нет таблицы календаря... я хочу динамически формировать такой список... возможно ли это?
5 авг 09, 14:05    [7500620]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
возможно
но лучше один раз создать таблицу календаря, которая пригодится еще не раз...
5 авг 09, 14:06    [7500626]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Паганель
возможно
но лучше один раз создать таблицу календаря, которая пригодится еще не раз...


подскажите по структуре этой таблицы... как она делается?
5 авг 09, 14:08    [7500630]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
style1
подскажите по структуре этой таблицы

Ну как минимум даты (например, от 1 января 2000 года и на сто лет вперед)
Это решать скорее Вам, я не в курсе что у Вас за задачи
Мало ли, может, Вам будет полезно, чтобы в этой таблице было еще поле-флаг "рабочий ли день"...

style1
как она делается?
первое, что нашлось поиском
5 авг 09, 14:16    [7500698]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Можно и таблицу с последовательными числами использовать
В качестве примера:
SELECT DATEADD(DAY,V.number,PrevMonth.D)[Дата]
FROM (SELECT DATEADD(MONTH, DATEDIFF(MONTH,0, GETDATE())-1,0))PrevMonth(D)
JOIN master.dbo.spt_values V ON V.type='P' AND V.number<DATEDIFF(DAY,PrevMonth.D, DATEADD(MONTH,3,PrevMonth.D))
ORDER BY V.number;
Но и в этом случае лучше сделать специальную свою таблицу.
5 авг 09, 14:20    [7500726]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
это конечно интересно, но такая таблица мне не нужна... все таки более интересен вариант с динамическим созданием нужного диапазона
5 авг 09, 14:21    [7500734]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
iap,

спасибо, попробую ваш вариант
5 авг 09, 14:23    [7500748]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
style1
это конечно интересно, но такая таблица мне не нужна... все таки более интересен вариант с динамическим созданием нужного диапазона
И Вас даже не убедит тот факт,
что запрос будет проще (меньше букв) и, следовательно, в нем меньше возможностей ошибиться ?
Что ж, имхо все необходимые ссылки уже дадены...
5 авг 09, 14:24    [7500755]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
style1
это конечно интересно, но такая таблица мне не нужна...
Это Вам только так кажется!
Воспринимайте совет Паганеля как рецепт врача.
Пациент ведь не всегда представляет себе пользу от выписываемого лекарства.
5 авг 09, 14:26    [7500770]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
хорошо.. совет воспринял... спасибо
5 авг 09, 14:33    [7500827]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
теперь не получается условие отбора поставить в запрос
ставлю так >DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)
ругается на выражение
5 авг 09, 14:54    [7500990]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
style1
теперь не получается условие отбора поставить в запрос
ставлю так >DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0)
ругается на выражение
Кто ругается?
А такой запрос работает? Что возвращает?
PRINT @@VERSION
5 авг 09, 14:59    [7501028]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
iap,
вопрос снят, надо было точку с запятой вместо запятой поставить
(ClDate > DATEADD(MONTH; DATEDIFF(MONTH; 0; GETDATE()) - 1; 0))
5 авг 09, 15:08    [7501118]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Glory
Member

Откуда:
Сообщений: 104760
style1
iap,
вопрос снят, надо было точку с запятой вместо запятой поставить
(ClDate > DATEADD(MONTH; DATEDIFF(MONTH; 0; GETDATE()) - 1; 0))

Вопросы по Access нужно задавать в форуме по Access
5 авг 09, 15:09    [7501126]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Glory
style1
iap,
вопрос снят, надо было точку с запятой вместо запятой поставить
(ClDate > DATEADD(MONTH; DATEDIFF(MONTH; 0; GETDATE()) - 1; 0))

Вопросы по Access нужно задавать в форуме по Access

это не аксесс... я делаю вьюху в SQL Server
5 авг 09, 15:12    [7501142]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Glory
Member

Откуда:
Сообщений: 104760
style1
Glory
style1
iap,
вопрос снят, надо было точку с запятой вместо запятой поставить
(ClDate > DATEADD(MONTH; DATEDIFF(MONTH; 0; GETDATE()) - 1; 0))

Вопросы по Access нужно задавать в форуме по Access

это не аксесс... я делаю вьюху в SQL Server

В синтаксисе DATEDIFF из SQL Server разделителем параметров является запятая и только запятая
5 авг 09, 15:16    [7501174]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
style1
Glory
style1
iap,
вопрос снят, надо было точку с запятой вместо запятой поставить
(ClDate > DATEADD(MONTH; DATEDIFF(MONTH; 0; GETDATE()) - 1; 0))

Вопросы по Access нужно задавать в форуме по Access

это не аксесс... я делаю вьюху в SQL Server
Версию засекретили что ли?
5 авг 09, 15:18    [7501188]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
версия 8.0

К сообщению приложен файл. Размер - 0Kb
5 авг 09, 15:22    [7501225]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Glory
Member

Откуда:
Сообщений: 104760


К сообщению приложен файл. Размер - 0Kb
5 авг 09, 15:32    [7501313]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
style1
Member

Откуда: Москва
Сообщений: 470
Glory,

у меня работает
5 авг 09, 15:42    [7501414]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
`
Guest
style1
Glory,

у меня работает

не ругайтесь
у вас - это разное

К сообщению приложен файл. Размер - 0Kb
5 авг 09, 15:49    [7501503]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
`
style1
Glory,

у меня работает

не ругайтесь
у вас - это разное

а при чем тут число и синтаксис функций?
5 авг 09, 16:11    [7501668]     Ответить | Цитировать Сообщить модератору
 Re: Как вывести список дат  [new]
`
Guest
Алексей2003,

не берите дурного в голову..
оно вам надо?
5 авг 09, 16:25    [7501785]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить