Форум: "Начинающим";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизПомогите написать запрос Найти похожие ветки
← →
СержК (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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c