Форум: "Базы";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
ВнизЗапросом выбрать клиентов с днем рожд. в ближайшие 10 дн. Найти похожие ветки
← →
alextov (2003-05-26 10:26) [0]Есть таблица с клиентами, в ней поле DR(дата рождения, напр "01.10.1955"),тип-date.
Нужно из таблицы клиентов запросом выбрать тех у кого день рождения в ближайшие 10 дней.
Select * from klienti where ???
Че-то я пробуксовываю, подскажите если кто знает , плз...
← →
Md (2003-05-26 10:34) [1]СУБД какая?
← →
alextov (2003-05-26 10:49) [2]sorry, прозевал - ORACLE 8.0.5
← →
stone (2003-05-26 10:59) [3]на счет Оракла не скажу, но в MSSQL есть функция DATEPART( datepart, date). Аналогичная функция должна быть и в Оракле.
← →
Reindeer Moss Eater (2003-05-26 11:16) [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 - ключ работника
← →
Sergey13 (2003-05-26 11:28) [5]Пробовал на 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"))
← →
SergSuper (2003-05-26 11:30) [6]для 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
т.е. идет перебор каждого клиента на предмет сколько ему лет
алгоритм конечно не эффективный, но если клиентов не много то вполне можно использовать
← →
alextov (2003-05-26 11:42) [7]Всем спасибо, запустил
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c