Consulta t-sql: Últimos 7 dias , 30 dias e 6 meses.

 

Dúvidas envie e-mail:

CanalSqlServerNaPratica@gmail.com

Neste vídeo ensino como filtrar os registros dos últimos 7dias, 30 dias e 180 dias de forma automática no Sql Server. Vamos entender como funciona passo a passo a consulta t-sql abaixo:

 

SELECT id_cupom, format(data_venda,’dd/MM/yyyy HH:mm:ss’) as DataVendaBr, format(valor,’c’,’pt-br’) as ValorReais

FROM bd_vendas_carro.dbo.tab_cupom_vendas

WHERE CAST(data_venda as date)

 between cast( dateadd (day,-7,getdate()) as date) and cast (getdate() as date)

ORDER BY data_venda desc 

 

Na cláusula FROM especifica a tabela bd_vendas_carro.dbo.tab_cupom_vendas, nela contém os dados da venda realizada, as colunas data_venda e valor. E na cláusula WHERE responsável por filtrar as linhas da tabela usou: Coluna data_venda de tipo DATETIME convertido para o tipo DATE, através da função CAST.

Operador BETWEEN define o período do filtro, Data_Inicial ( Hoje – 7 dias, 30 dias ou 180 dias) e a Data Fim (Hoje).

Função DATEADD realiza a adição e subtração a partir de uma data. Nela usou o parâmetro DAY (calcular dias). Parâmetros -7 (subtrair 7 dias), -30 (subtrair 30 dias) e -180 (subtrair 180 dias).

Função GETDATE apresenta a data atual do sistema operacional, neste caso Windows. Usamos o CAST para converter todos os tipos de dados de DATETIME para DATE da coluna data_venda, das funções GETDATE() e DATEADD. SELECT cláusula responsável por exibir as colunas da consulta.

Mostra os campos Data_Venda e valor. A função FORMAT responsável por formatar as datas e valores das vendas para o padrão brasileiro ( DD/MM/ANO) e Reais R$.

Cláusula AS apelida as colunas Data_Venda como as DataVendaBr e o valor como ValorReais. Cláusula ORDER BY ordena a exibição da consulta da Maior para Menor (Recente para mais antiga) Data_Venda.

 

Script usado na vídeo aula:

 

 

 

use master

go

 

 

/*Criar o banco de dados vendas */

 

create database bd_vendas_carro

go

 

/*Seleciona o banco de dados */

 

use bd_vendas_carro

go

 

/*Criar tabela tab_cupom */

 

create table tab_cupom_vendas (

 id_cupom int identity(1,1000),

 data_venda datetime,

 valor  float

 )

 

 go

 

/* Insere registros/ Popular a tabela vendas */

 

DECLARE @numero INT;

SET @numero=0;

WHILE @numero< 1000

BEGIN

    INSERT tab_cupom_vendas  ( data_venda,  valor)

    VALUES ( dateadd(d,-1*@numero,getdate()), @numero * 10)

       –VALUES ( dateadd(d,-1*@numero,getdate()), @numero * 10)

    SET @numero = @numero + 1;

END

go

 

 

/* Consulta t-sql : Últimos 7 dias, 30 dias e 6 meses */

 

select

id_cupom,

  format(data_venda,’dd/MM/yyyy HH:mm:ss’) as DataVendaBr,

  format(valor,’c’,’pt-br’) as ValorReais

from  bd_vendas_carro.dbo.tab_cupom_vendas

 

where CAST(data_venda as date) between cast( dateadd (day,-7,getdate()) as date)  

                               and  cast (getdate() as date)

order by data_venda desc

  

go

 

Sobre Adilson Paranhos 12 Artigos
Formado em Analise e Desenvolvimento de Sistemas, experiência há mais de 10 anos. Amo aprender, ensinar, compartilhar e simplificar coisas... Linguagem T-SQL, consultas básicas e avançadas, filtros, agrupamentos, junções, funções, views, funções de sistemas

1 Comentário

  1. Olá Adilson, tudo bem? eu consegui usar as linhas e funcionaram para corretamente, porém o horário que é utilizado onde trabalho para fechamento de dia não é 00:00 de início e fim e sim das 06:00:00 do dia anterior e 05:59:59 do dia atual, estou tentando fazer esse parâmetro pra corresponder com o sistema e montar um relatório direto pelo power bi, mas essa questão da hora esta me dando trabalho e não estou conseguindo finalizar, como eu poderia estar utilizando essas linhas do sql e adicionando um início e fim sem ser 00:00, obrigado desde já

Faça um comentário

Seu e-mail não será publicado.


*