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

Откуда:
Сообщений: 251
Как найти записи за 05 месяц в таблице?
дата хранится в формате 2012-05-12 00:00:00.000

select *
from [2011]
where GD1  like '%-05-%' 

не работает((((
18 дек 12, 14:26    [13648869]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
ola_ya_22
...дата хранится в формате 2012-05-12 00:00:00.000...
Она символьного типа?
18 дек 12, 14:30    [13648899]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
ola_ya_22,

для случая, если GD1 тип дата:
select *
from [2011]
where MONTH(GD1) =5 AND YEAR(GD1) =2012
18 дек 12, 14:46    [13648985]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
trew
для случая, если GD1 тип дата:
select *
from [2011]
where MONTH(GD1) =5 AND YEAR(GD1) =2012
Это если нужно запретить использовать индексы, только сканы.

ola_ya_22
Как найти записи за 05 месяц в таблице?
дата хранится в формате 2012-05-12 00:00:00.000

select *
from [2011]
where GD1  like '%-05-%' 

не работает((((

select *
from [2011]
where GD1  >= '20120501' and GD1  < '20120601'
18 дек 12, 15:20    [13649236]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
ola_ya_22
Как найти записи за 05 месяц в таблице?
А если за 5-й месяц любого года, то:
select *
from [2011]
where MONTH(GD1) = 5
18 дек 12, 15:22    [13649247]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
trew
ola_ya_22,

для случая, если GD1 тип дата:
select *
from [2011]
where MONTH(GD1) =5 AND YEAR(GD1) =2012

для случая, когда все записи удовлетворяют условию
select *
from [2011]
[/quot]
18 дек 12, 15:30    [13649294]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
alexeyvg
trew
для случая, если GD1 тип дата:
select *
from [2011]
where MONTH(GD1) =5 AND YEAR(GD1) =2012
Это если нужно запретить использовать индексы, только сканы.

А если в таблице, случайно, два вычисляемых поля MONTH(GD1) и YEAR(GD1), на которых будут построены индексы?

А вообщем случае, Вы правы. Писать нужно так:
where GD1  >= '20120501' and GD1  < '20120601'
18 дек 12, 15:35    [13649340]     Ответить | Цитировать Сообщить модератору
 Re: Как найти записи за 05 месяц в таблице?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31431
trew
А если в таблице, случайно, два вычисляемых поля MONTH(GD1) и YEAR(GD1), на которых будут построены индексы?
Ага, могут быть случаи, огда и с функциями будет работать, вроде оптимизатор такое распознаёт.

Но ИМХО это имеет смысл, если действительно нужно получить записи за какой то месяц для всех годов...
18 дек 12, 15:37    [13649364]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить