![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запросом выбрать клиентов с ;днем рожд. в ближайшие 10 дн. [D5]
alextov © (2003-05-26 10:26:00)Есть таблица с клиентами, в ней поле DR(дата рождения, напр "01.10.1955"),тип-date.
Нужно из таблицы клиентов запросом выбрать тех у кого день рождения в ближайшие 10 дней.
Select * from klienti where ???
Че-то я пробуксовываю, подскажите если кто знает , плз...
alextov (2003-05-26 11:42:00) [1]Всем спасибо, запустил
SergSuper (2003-05-26 11:30:00) [2]для MS SQL
допустим есть таблица Age(years int) с числами от 1 до 100 (можно от 18 до 60)
тогда так
select * from klienti k, Age a
where dateadd(yy, a.years, k.birthday) between GetDate() and GetDate() + 10
т.е. идет перебор каждого клиента на предмет сколько ему лет
алгоритм конечно не эффективный, но если клиентов не много то вполне можно использовать
Sergey13 (2003-05-26 11:28:00) [3]Пробовал на 8.1.6
select * from table_clients
where to_number(to_char(dr,"ddd"))
between to_number(to_char(sysdate,"ddd")) and to_number(to_char(sysdate+10,"ddd"))
Reindeer Moss Eater (2003-05-26 11:16:00) [4]Для MSSQL:
Create View VBDays(Tn) as
Select Tn From Peoples
Where
(Month(BDate) = Month(GetDate()) And Day(BDate) - Day(GetDate()) Between 0 and 10)
OR
(
Month(BDate) = Month(GetDate() + 10) And Day(BDate) <= Day(GetDate()+10) And Month(GetDate()+10) <> Month(GetDate())
)
Для Оракла то же самое, но вместо функций Month и Day применить
Extract(MONTH From BDate) и Extract(DAY From BDate)
BDate - поле даты рождения, TN - ключ работника
stone (2003-05-26 10:59:00) [5]на счет Оракла не скажу, но в MSSQL есть функция DATEPART( datepart, date). Аналогичная функция должна быть и в Оракле.
alextov (2003-05-26 10:49:00) [6]sorry, прозевал - ORACLE 8.0.5
Md (2003-05-26 10:34:00) [7]СУБД какая?