![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SELECT!!! Извлечение данных по дню месяца и месяцу года. [D6, IB6.x]
Sugrob © (2003-10-23 19:38:00)
Помогите, пжлса, решить такую задачу.
К примеру имеем таблицу сотрудников. Поля такие:
1. ID INTEGER
2. NAME VARCHAR(50)
3. BITHDAY DATE (день рождения)
Необходимо извлечь только те данные, где:
1. ДЕНЬ рождения равен сегодняшнему дню или больше;
2. МЕСЯЦ рождения равен текущему месяцу или больше;
3. Год - все равно какой;
Т.е. нужно вывести список сотрудников, у которых день рождения сегодня или в ближайшие несколько дней (хотя можно и до конца года или месяца - это не принципиально). При этом записи должны быть отсортированы в следуюшем порядке: Месяц -> День -> Год
Например, имеем в базе записи:
1 Иванов 10.05.1985
2 Сидоров 27.11.1972
3 Петров 08.11.1976
4 Васильев 23.10.1965
Сегодня у нас 23.10.2003
после извлечения в НД долны содержаться записи:
4 Васильев 23.10.1965
3 Петров 08.11.1976
2 Сидоров 27.11.1972
Возможно будет другое решение, к примеру основанное не на TQuery, а на TTable. Я пробовал через TTable. Делал поля Calculated. Вычленял номер дня и месяца. Все бы хорошо, но сделать сортировку в нужном порядке - не получилось, т.к. индекс основан и на ГОДЕ рождения...
И просьба не предлагать вариант хранения в базе дня рождения в трех полях (день, месяц, год). Это принципиально важно...
Johnmen (2003-10-23 22:50:00) [1]
>anatolyk (23.10.03 22:34)
"Казалось бы, а причем тут Лужков ?" (c) Доренко
anatolyk (2003-10-23 22:34:00) [2]
в самом MSSQL, например, есть ф-ия Dateapart(part,date), которая выделяет из даты хоть год, хоть секунды.
Rad (2003-10-23 20:14:00) [3]
2 Sugrob © (23.10.03 20:07) [2]
Ну там ещеmonthиdayможноEXTRACT. Заметил, да?
P.S. Вот это я понимаю, человек совершенно правильно отреагировал на ответ, без всяких там "а примерчик, ну плиииз" :))
Sugrob (2003-10-23 20:07:00) [4]
>Rad ©
Замечательно! То что надо!
Rad (2003-10-23 19:51:00) [5]
RTFM
EXTRACT (year FROM <Field_Name>)иORDER BY 1, 2, 3