Blog Archives

Select’s que voce nunca esperava ver Post 01

Ola Pessoal,

Nesse blog inicia-se a serie: Select's que voce nunca esperava em ver.
É isso mesmo que você lê, o objetivo aqui é mostrar certas gambiarras que você pode encontrar por ai, mas que com um pouco de dedicação tudo pode se tornar mais facil. 
O primeiro caso (real) começa agora.

Quero consultar dados a partir de uma range de datas (sem o horário), 
porem nao quero utilizar a expressao >= e <=, para ficar mais facil poderemos utilizar somente > e <.

create table #temp (id int identity(1,1), mensagem varchar (200),
datainicio datetime, dataFim datetime)

insert into #temp values ('mensagem 01','20110101','20110617') insert into #temp values ('mensagem 02','20110102','20110617') insert into #temp values ('mensagem 03','20110103','20110617') insert into #temp values ('mensagem 04','20110104','20110617') insert into #temp values ('mensagem 05','20110103','20110614') insert into #temp values ('mensagem 06','20110304','20110614') insert into #temp values ('mensagem 07','20110504','20110614') insert into #temp values ('mensagem 08','20110504','20110618') insert into #temp values ('mensagem 09','20110504','20110621')
Agora o que se faz necessário é pegar todos os dados onde a data de inicio é maior e igual a 02/01/2011 e a data fim é menor e igual a 14/06/2011.

Simples basta realizarmos essa consulta:
select * from temp
where datainicio > dateadd(dd,1,'20101231')
and dataFim < DATEADD(DD,1,'20110614')
Viu? Olha que abordagem mais fácil.. Por que não usar essa consulta na parte de cima ao invés dessa:
select * from temp
where datainicio >= '20110102'
and dataFim <= '20110614'
Entao pessoal, hoje foi o primeiro post de uma serie que esta por vir, 
vou tentar postar o máximo de casos reais possiveis como esse de hoje.
Marcos Freccia
MCTS SQL Server 2008
@SQLFreccia