Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.14;
Скачать: CL | DM;

Вниз

Помогите написать запрос   Найти похожие ветки 

 
СержК   (2006-12-26 10:40) [0]

Мастера, подскажите второй день мучаюсь.

У меня есть таблица в которой содержится список сотрудников и их дни рождения: Day: integer, Month: integer, Year: integer

Я пытаюсь написать запрос, чтобы указывая временной интервал выбырать тех у кого выпадает в это время день рождения. Все нормально когда выбирается информация в пределах одного месяца, а вот при попытке сделать выборку например: 20.11 - 05.12 получается ерунда:
01.11 - 05.11

20.11 - 05.12 - мне нужно только это

05.12 - 31.12

Я пытаюсь делать следующее:

Where  ( (  (ROGDENIE_DAY>=20) and (ROGDENIE_DAY<=31) and
   (ROGDENIE_MONTH >=11) and (ROGDENIE_MONTH <=12))

    or

( (ROGDENIE_DAY>=1) and (ROGDENIE_DAY<=5)  and
  (ROGDENIE_MONTH >=11) and (ROGDENIE_MONTH <=12) )
)

Мастера подскажите, измучился совсем


 
evvcom ©   (2006-12-26 10:42) [1]

Сведи лучше дату в поле с типом "дата", и будет тебе Щастье


 
СержК   (2006-12-26 10:47) [2]

Свести-то не проблема, но вот преимущества пока не вижу (может просто устал). Если можно подскажите.


 
Sergey13 ©   (2006-12-26 10:49) [3]

> [2] СержК   (26.12.06 10:47)
Например решится эта задача - чем не преимущество.
А так хранить - есть какие то преимущества? Поделись, может всем переводить надо.


 
ЮЮ ©   (2006-12-26 10:52) [4]


> Сведи лучше дату в поле с типом "дата", и будет тебе Щастье


Счастья немного. Придется вычленять дени и месяц :)


> Я пытаюсь делать следующее:


Сделай проще
(ROGDENIE_MONTH = :MonthFrom) AND (ROGDENIE_DAY >= :DayFrom))
OR
(ROGDENIE_MONTH > :MonthFrom) AND (ROGDENIE_MONTH < :MonthTo)
OR
(ROGDENIE_MONTH = :MonthTo) AND (ROGDENIE_DAY<= :DayTo))

Теперь задавай 4  параметра, в твоем случае,
MonthFrom 11
DayFrom 20
MonthFrom 12
DayTo 5,
и наслаждайся


 
СержК   (2006-12-26 10:53) [5]

Уже свел дату рождения в формат Date, но дальше что-то выхода не вижу...

Как быть то....


 
ЮЮ ©   (2006-12-26 10:54) [6]


> Уже свел дату рождения в формат Date, но дальше что-то выхода
> не вижу...


Теперь вычленяй день и месяц :)
Запрос я уже привел


 
Sergey13 ©   (2006-12-26 10:57) [7]

> [5] СержК   (26.12.06 10:53)

where ROGDENIE_data between :D_begin and :D_end


 
ЮЮ ©   (2006-12-26 10:59) [8]

и какие :D_begin и:D_end задать, чтобы получить список родившихся 26 декабря. Год, как понимаешь, здесь совсем не важен


 
СержК   (2006-12-26 11:02) [9]

Да.

Если я из Date построчно буду вычленять день и месяц, то задача просто сводится к исходной и смысла в Date похоже нет. придется работать с integer.


 
Sergey13 ©   (2006-12-26 11:02) [10]

> [8] ЮЮ ©   (26.12.06 10:59)

Что-то я про это не подумал. 8-)


 
evvcom ©   (2006-12-26 11:24) [11]

> [4] ЮЮ ©   (26.12.06 10:52)
> Придется вычленять дени и месяц :)

Угу :)

> [2] СержК   (26.12.06 10:47)
> вот преимущества пока не вижу

ну хотя бы самому не придется следить за правильностью ввода чисел и готовые компоненты есть для работы с датой. А вычленить разве проблема?


 
СержК   (2006-12-26 11:30) [12]

ЮЮ огромное спасибооо!

То - что нужно!


 
Anatoly Podgoretsky ©   (2006-12-26 12:44) [13]

> СержК  (26.12.2006 11:02:09)  [9]

Смысл есть, но не для этой цели.


 
Anatoly Podgoretsky ©   (2006-12-26 12:45) [14]

> Sergey13  (26.12.2006 11:02:10)  [10]

Ты подумал, не не дописал до конца запрос (between d1 and d2) or (between d2 and d4) or ...


 
Anatoly Podgoretsky ©   (2006-12-26 12:51) [15]

> ЮЮ  (26.12.2006 10:52:04)  [4]

Не будет твой запрос работать, ты не учел все варианты, например

20.11 и 21.11

Первая часть сразу вернет день 22 и все дни более 21.
Задачу надо решать через день года, да и то там тоже есть засада на стыке лет. В пределах одного года все работать будет правильно.



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.041 c
2-1167118826
СержК
2006-12-26 10:40
2007.01.14
Помогите написать запрос


2-1166966082
yeorsh
2006-12-24 16:14
2007.01.14
Вопрос изменения DBGrid.Font.Color.


15-1166662585
Oreolek
2006-12-21 03:56
2007.01.14
Ассемблер


2-1166737977
lluha
2006-12-22 00:52
2007.01.14
DBGrid


2-1166981875
sinus
2006-12-24 20:37
2007.01.14
Вписать форму в другую форму