
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
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á