Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1132
Assunto : SQL Server
Titulo: Filtrando acontecimentos no dia de hoje

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



Trabalhar com datas no SQL Server pode ser um desafio. O campo Date, que armazena apenas a data, ainda é uma novidade recente, a maioria dos modelos de dados guarda a data em campos que também armazenam a hora.

Isso torna dificil filtrar os dados de um dia específico, por exemplo. Torna-se necessário buscar informações entre as 00 horas e 23:59 deste dia.

Manipular as partes da data - dia, mês e ano - geraria o uso de funções no lado esquerdo das comparações e com isso prejudicaria bastante a performance das queries.

Para resolver, podemos calcular as 00 horas e 23:59 do dia em questão e utilizarmos em um filtro Between. Para ficar mais fácil ainda, criamos functions para fazer esse cálculo, desta forma vamos criar as funções Today e FimToday.

CREATE FUNCTION fimToday
(
@Data datetime

)
RETURNS DateTime
AS
BEGIN
-- Declare the return variable here
DECLARE @Result DateTime

-- Add the T-SQL statements to compute the return value here
SELECT @Result = dateadd(second,-1,DATEADD(DAY, 1, dateadd(day,datediff(day,0,@data),0)) )

-- Return the result of the function
RETURN @Result

END
GO

CREATE FUNCTION Today
(
@Data datetime

)
RETURNS Datetime
AS
BEGIN
-- Declare the return variable here
DECLARE @Result Datetime

-- Add the T-SQL statements to compute the return value here
SELECT @Result = dateadd(day,datediff(day,0,@data),0)

-- Return the result of the function
RETURN @Result

END
GO


Criadas as functions, podemos utiliza-las em queries. Por exemplo, no banco northwind, obter todas as vendas (orders) de um dia :

select * from orders where orderdate between dbo.today(getdate()) and dbo.fimtoday(getdate())

Desta forma fazemos o filtro de forma simples sem prejudicar a performance da query.

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br