Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL  [new]
irina2003
Member

Откуда: Stavropol
Сообщений: 69
Доброе время суток, ВАМ!
Мне нужно найти в базе данных все записи, например, с 1995 года января месяца по сентябрь 2004 года. Как это сделать, помогите, пожалуйста!

Так я сейчас запрашиваю МЕСЯЦ:
Select * from icx_sv.db
Where mesiac between :m1 and m2

Но мне надо ещё и ГОД – nomer_year between :y1 and y2

Как мне добавить ГОД в запрос?????????????????????
4 мар 04, 14:49    [563804]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
???
Select * from icx_sv.db 

Where mesiac between (m1 and m2)
AND nomer_year between (y1 and y2)
4 мар 04, 14:50    [563808]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
irina2003
Member

Откуда: Stavropol
Сообщений: 69
tpg

Спасибо большое, я попробую!!!!
4 мар 04, 14:56    [563833]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
а, если декабрь 1995 года тоже, например, надо, то как-то так:

Select * from icx_sv.db
Where (nomer_year = y1 AND mesiac >= m1)
OR (nomer_year > y1 AND nomer_year < y2)
OR (nomrt_year = y2 AND mesiac <= m2) -- Это если первый месяц не январь


4 мар 04, 15:02    [563846]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2505
Select * from icx_sv.db
Where date between '01.01.1995' and '30.09.2004'

Date and Time Functions
BOL -> Transact-SQL Reference -> Functions -> Date and Time Functions
4 мар 04, 15:06    [563857]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
2 Александр ну... у него-ж не даты, а номера: в одном поле месяц, в другом год и т.д. :)
4 мар 04, 15:09    [563864]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
Select * from icx_sv.db
Where date between '01.01.1995' and '30.09.2004'

Это не следует из постановки вопроса в топике, а следует из неё, что значения месяца и года хранятся в разных колонках и, по всей видимости, целого типа.
4 мар 04, 15:09    [563865]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902

автор
... у него

А из ника следует что у неё
4 мар 04, 15:11    [563868]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
да... на ник я не посмотрел. но сейчас вывернусь. у него: у программиста, у автора топика, у....
ну а ваще смешно, да.
4 мар 04, 15:12    [563874]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Нужно в запросе преобразовать поля года и месяца к виду yyyymm. Тогда можно будет их сравнивать на =</ >=
4 мар 04, 15:18    [563886]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
2Glory наверняка можно, но не медленнее ли будет?
4 мар 04, 15:20    [563893]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
По сравнению с 3-мя OR-ми в запросе ??
Может даже и быстрее :)
4 мар 04, 15:23    [563902]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Sa
Member

Откуда: Ekaterinburg
Сообщений: 4019
2 irina2003

План пожалуйста в студию :-)
4 мар 04, 15:29    [563917]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2505
2 Luchkin Dmitry, tpg
Я же в своем ответе также привел ссылки и на раздел BOL по работе с функциями даты/времени
4 мар 04, 15:37    [563940]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
Luchkin Dmitry
Member

Откуда: Новосибирск -> Ангарск -> Братск -> Мск
Сообщений: 1921
...Where nomer_year*100+mesiac between y1*100+m1 and y2*100+m2? ;)
4 мар 04, 15:52    [563980]     Ответить | Цитировать Сообщить модератору
 Re: SQL  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
автор
...Where nomer_year*100+mesiac

А вот это то точно приведет к сканированию
5 мар 04, 06:30    [564692]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить