Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1167047200
alex1111111111111111
2006-12-25 14:46
2007.01.14
как с помощью winapi закачать фаил с ftp


15-1167023057
vajo
2006-12-25 08:04
2007.01.14
Может у кого есть принтер Canon LBP-3200


15-1166634448
Pit_q
2006-12-20 20:07
2007.01.14
Настольый теннис


15-1166613701
petrovsky
2006-12-20 14:21
2007.01.14
Опять Access violation


4-1156477511
Kacnep
2006-08-25 07:45
2007.01.14
Сервис не ShutDownит сервер с выданными привилегиями.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский