Usuário com melhor resposta
GETDATE() COM ACUMULADO DE 7 DIAS

Pergunta
-
Olá pessoa, estou com uma duvida com relação ao comando abaixo.
É uma parte de um comando que eu fiz, mas preciso de ajuda, depois do GETDATE(), onde eu preciso de um acumulado dos últimos 7 dias, tentei fazer isso no comando abaixo, mas não consegui, ele não acumula, apenas me da um dia anterior, ou 2 dias antes, etc, ou seja, sempre o dia atual GETDATE(), mais os ultimos 7 dias
(SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10) = CONVERT(CHAR(10), GETDATE(), 103))
Data do pedido
20/10/2016
(SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10) = CONVERT(CHAR(10), GETDATE()-1, 103))
Data do pedido
19/10/2016
(SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10) = CONVERT(CHAR(10), GETDATE()-2, 103))
Data do pedido
18/10/2016
Eu preciso de uma forma que eu pegue sempre um acumulado dos últimos 7 dias, ou seja , um exemplo seria do dia 14 ate 20, partindo do dia de hoje,
Se for amanha dia 21, que acumule do dia 15 ate 21, e assim por diante.
Alguem pode me ajudar?
- Editado Ana Paula Rocha quinta-feira, 20 de outubro de 2016 13:22 acres
Respostas
-
1) vc falou em acumular, mas não vi os campos valores na sua query , para acumular
2) se puder roda seu trecho fazendo um top 3 sem os wheres
SELECT top 3
VwPart.NomeOnlu ,
SUBSTRING(TOBs.Observacoes, CHARINDEX('Data Pedido:', TOBs.Observacoes) + 13, 10) AS Data_Pedido ,
SUBSTRING(TOBs.Observacoes, 33, 28) AS Comunicado
FROM dbo.vwWRIAtosParticipantes AS VwPart
INNER JOIN dbo.tblWRIAtosNegocios AS TNegocio ON TNegocio.PK_ID = VwPart.FK_tblWRIAtosNegocios_Id
INNER JOIN dbo.tblWRIAtos AS TAtos ON TAtos.PK_ID = TNegocio.FK_tblWRIAtos_Id
INNER JOIN dbo.tblWRIAtoObs AS TOBs ON TOBs.FK_tblWRIAtos_Id = dTAtos.PK_ID
INNER JOIN dbo.tblWRIAtosParticipantes AS TParc ON TParc.FK_tblWRIPessoas_Id = VwPart.FK_tblWRIPessoas_Id
INNER JOIN dbo.tblWRIReal TReal ON TReal.PK_ID = TAtos.FK_tblWRIReal_Id
WHERE ( TReal.FK_tblWRILivro_Id = 15 )
Wesley Neves
- Editado Wesley Neves quinta-feira, 20 de outubro de 2016 15:58 Erro
- Marcado como Resposta Ana Paula Rocha quinta-feira, 20 de outubro de 2016 16:26
Todas as Respostas
-
O que voce quer dizer com acumule? Qual campo voce quer que seja acumulado?
Para isso isso voce deveria fazer:
(SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10) between CONVERT(CHAR(10), GETDATE()-7, 103)) and CONVERT(CHAR(10), GETDATE(), 103))
mas eu nao conheco sua query completa.
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
-
Poderia explicar o por quê? Eu nao vejo outra soluçao.
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
-
Bom dia , Para vc fazer um valor acumulado, vc vai precisar de um intervalo de hoje a sete dias atras,
1) Como vc vai acumular usando o igual
2) posta seu exemplo do trecho seu Where
fiz algo assim , não sei se te ajuda
WHERE CONVERT(CHAR(10),( cast( ( seu trecho que vc recupera a data ) as date ) , 103) BETWEEN CONVERT(CHAR(10), CAST(DATEADD(DAY, -7, GETDATE()) AS DATE) , 103) AND CONVERT(CHAR(10), CAST(GETDATE() AS DATE) , 103)
Wesley Neves
-
Deu certo o que voce mandou, só um detalhe que tambem nao sei se tem a ver com a data,
mas ele trouxe assim:
20/10/2016
20/10/2016
20/10/2016
20/10/2015
20/10/2015
20/10/201520/09/2016
20/09/2015
20/09/2016
20/09/2016
20/09/2015
20/09/2015 -
Sem conhecer sua query completa, fica dificil te ajudar...
Poderia posta-la aqui?
Att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
SELECT DISTINCT
dbo.vwWRIAtosParticipantes.NomeOnlu, SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10)
AS Data_Pedido, SUBSTRING(dbo.tblWRIAtoObs.Observacoes, 33, 28) AS Comunicado, dbo.formata_cnpj_cpf(dbo.tblWRIAtosParticipantes.DocumentosFull)
AS CPF_CNPJ
FROM dbo.vwWRIAtosParticipantes INNER JOIN
dbo.tblWRIAtosNegocios ON dbo.tblWRIAtosNegocios.PK_ID = dbo.vwWRIAtosParticipantes.FK_tblWRIAtosNegocios_Id INNER JOIN
dbo.tblWRIAtos ON dbo.tblWRIAtos.PK_Id = dbo.tblWRIAtosNegocios.FK_tblWRIAtos_Id INNER JOIN
dbo.tblWRIAtoObs ON dbo.tblWRIAtoObs.FK_tblWRIAtos_Id = dbo.tblWRIAtos.PK_Id INNER JOIN
dbo.tblWRIAtosParticipantes ON dbo.tblWRIAtosParticipantes.FK_tblWRIPessoas_Id = dbo.vwWRIAtosParticipantes.FK_tblWRIPessoas_Id INNER JOIN
dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id = dbo.tblWRIAtos.FK_tblWRIReal_Id
WHERE (dbo.tblWRIReal.FK_tblWRILivro_Id = 15)
AND (SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:', dbo.tblWRIAtoObs.Observacoes) + 13, 10)
BETWEEN CONVERT(CHAR(10), CAST(DATEADD(DAY, -7, GETDATE()) AS DATE) , 103) AND CONVERT(CHAR(10), CAST(GETDATE() AS DATE) , 103))
order by Data_Pedido desc
RESULTADOS:
20/10/2016
20/10/2016
20/10/201620/10/2015
20/10/2015
20/10/201520/09/2016
20/09/2015
20/09/2016
20/09/2016
20/09/2015
20/09/2015- Editado Ana Paula Rocha quinta-feira, 20 de outubro de 2016 15:35 ACRES
-
Esse '20/10/2016' e o formato de data , que está no formato pt-BR,
aplicado pelo trecho CONVERT(CHAR(10), CAST(DATEADD(DAY, -7, GETDATE()) AS DATE) , 103)
Para mais informações tem esse link
https://augustopierzynski.wordpress.com/2011/08/25/formatando-data-no-sql-server/
ou uma pesquisa aqui no forum.
Se puder posta um trecho doseu Código.
Wesley Neves
-
SELECT DISTINCT
dbo.vwWRIAtosParticipantes.NomeOnlu,SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:',dbo.tblWRIAtoObs.Observacoes) + 13, 10)
AS Data_Pedido, SUBSTRING(dbo.tblWRIAtoObs.Observacoes, 33, 28) ASComunicado, dbo.formata_cnpj_cpf(dbo.tblWRIAtosParticipantes.DocumentosFull)
AS CPF_CNPJ
FROM dbo.vwWRIAtosParticipantes INNER JOIN
dbo.tblWRIAtosNegocios ON dbo.tblWRIAtosNegocios.PK_ID =dbo.vwWRIAtosParticipantes.FK_tblWRIAtosNegocios_Id INNER JOIN
dbo.tblWRIAtos ON dbo.tblWRIAtos.PK_Id =dbo.tblWRIAtosNegocios.FK_tblWRIAtos_Id INNER JOIN
dbo.tblWRIAtoObs ON dbo.tblWRIAtoObs.FK_tblWRIAtos_Id =dbo.tblWRIAtos.PK_Id INNER JOIN
dbo.tblWRIAtosParticipantes ONdbo.tblWRIAtosParticipantes.FK_tblWRIPessoas_Id =dbo.vwWRIAtosParticipantes.FK_tblWRIPessoas_Id INNER JOIN
dbo.tblWRIReal ON dbo.tblWRIReal.PK_Id =dbo.tblWRIAtos.FK_tblWRIReal_Id
WHERE (dbo.tblWRIReal.FK_tblWRILivro_Id = 15)
AND (SUBSTRING(dbo.tblWRIAtoObs.Observacoes, CHARINDEX('Data Pedido:',dbo.tblWRIAtoObs.Observacoes) + 13, 10)
BETWEEN CONVERT(CHAR(10), CAST(DATEADD(DAY, -7, GETDATE()) AS DATE) , 103) AND CONVERT(CHAR(10), CAST(GETDATE() AS DATE) , 103))
order by Data_Pedido desc
RESULTADOS:
20/10/2016
20/10/2016
20/10/201620/10/2015
20/10/2015
20/10/201520/09/2016
20/09/2015
20/09/2016
20/09/2016
20/09/2015
20/09/2015 -
Por acaso existe mais de uma data de pedido dentro do campo Observacoes? Creio que seja um campo tipo texto livre (certo?), existem casos onde um mesmo regitro possua mais de uma data?
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
-
-
1) vc falou em acumular, mas não vi os campos valores na sua query , para acumular
2) se puder roda seu trecho fazendo um top 3 sem os wheres
SELECT top 3
VwPart.NomeOnlu ,
SUBSTRING(TOBs.Observacoes, CHARINDEX('Data Pedido:', TOBs.Observacoes) + 13, 10) AS Data_Pedido ,
SUBSTRING(TOBs.Observacoes, 33, 28) AS Comunicado
FROM dbo.vwWRIAtosParticipantes AS VwPart
INNER JOIN dbo.tblWRIAtosNegocios AS TNegocio ON TNegocio.PK_ID = VwPart.FK_tblWRIAtosNegocios_Id
INNER JOIN dbo.tblWRIAtos AS TAtos ON TAtos.PK_ID = TNegocio.FK_tblWRIAtos_Id
INNER JOIN dbo.tblWRIAtoObs AS TOBs ON TOBs.FK_tblWRIAtos_Id = dTAtos.PK_ID
INNER JOIN dbo.tblWRIAtosParticipantes AS TParc ON TParc.FK_tblWRIPessoas_Id = VwPart.FK_tblWRIPessoas_Id
INNER JOIN dbo.tblWRIReal TReal ON TReal.PK_ID = TAtos.FK_tblWRIReal_Id
WHERE ( TReal.FK_tblWRILivro_Id = 15 )
Wesley Neves
- Editado Wesley Neves quinta-feira, 20 de outubro de 2016 15:58 Erro
- Marcado como Resposta Ana Paula Rocha quinta-feira, 20 de outubro de 2016 16:26