Usuário com melhor resposta
Range de data: 1º dia do mês e dia - 1 até o final do mês

Pergunta
-
Tenho uma consulta onde quero identificar um range de data: do 1º dia do mês até o dia de ontem (d-1), até chegar no último dia do mês ou seja, se hoje é dia 10 a consulta retorna dados entre os dias 1 à 10 do mês, 1 à 11, 1 à 12.........1 à 31..
a função funciona até que seja o primeiro dia do mês, onde a primeira função do 1º dia é estática, nunca muda, porém a segunda função d-1, no 1º dia do mês volta para o mês anterior (getdate()-1).
OBS: Não gostaria de fazer um CASE validando se é dia 1º ou não.
SELECT DATEADD(MM,-1,DATEADD(DD,-DAY(GETDATE())+1,(SUBSTRING(CONVERT(VARCHAR,(GETDATE()),120),1,10)) + ' 00:00:00')) , DATEADD(DD,-DAY(GETDATE()),(SUBSTRING(CONVERT(VARCHAR,(GETDATE()),120),1,10)) + ' 23:59:59')
Respostas
-
Veja se isso te atende
--01/12/2017 00:00:00" à "05/12/2017 23:59:59" --Porém no dia 1º deste mês o resultado seria este: --"01/12/2017 00:00:00" à "30/11/2017 23:59:59" DECLARE @dataInicio DATETIME = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1); DECLARE @Data DATETIME = '2017-12-06'; WITH Dados AS (SELECT @dataInicio Dia UNION ALL SELECT DATEADD(DAY, 1, R.Dia) FROM Dados R WHERE R.Dia < DATEADD(DAY, -1, @Data) ), Intervalo AS (SELECT PrimeiroDia = FIRST_VALUE(R.Dia) OVER (ORDER BY (SELECT NULL)), R.Dia, UltimoDIa = LAST_VALUE(R.Dia) OVER (ORDER BY (SELECT NULL)) FROM Dados R ) SELECT I.Dia, I.PrimeiroDia, I.UltimoDIa, Texto = CONCAT( FORMAT(I.PrimeiroDia,'dd/MM/yyyy HH:mm:ss'), SPACE(1), 'à', SPACE(1), FORMAT(I.UltimoDIa,'dd/MM/yyyy 23:59:59') ) FROM Intervalo I OPTION (MAXRECURSION 0);
Wesley Neves - Brasilia-DFhttps://wesleyneves.wordpress.com/
SELECT Tab.[that's me:]
FROM
(
VALUES
('Wesley Neves'),
('Analista.NET'),
('Pós Graduando em Banco de Dados com ênfase em BI'),
('MTA -SQL Server'),
('MTA -Web Developed')
) AS Tab ("that's me:");
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 11 de dezembro de 2017 13:10
-
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 11 de dezembro de 2017 13:10
Todas as Respostas
-
Qual seria o resultado para o dia de hoje ??
não consegui entender a saida
Wesley Neves - Brasilia-DFhttps://wesleyneves.wordpress.com/
SELECT Tab.[that's me:]
FROM
(
VALUES
('Wesley Neves'),
('Analista.NET'),
('Pós Graduando em Banco de Dados com ênfase em BI'),
('MTA -SQL Server'),
('MTA -Web Developed')
) AS Tab ("that's me:");
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
-
-
Bom dia,
gustavoalp, qual deveria ser o resultado se hoje fosse dia 01/12/2017?
Assinatura: http://www.imoveisemexposicao.com.br
-
Veja se isso te atende
--01/12/2017 00:00:00" à "05/12/2017 23:59:59" --Porém no dia 1º deste mês o resultado seria este: --"01/12/2017 00:00:00" à "30/11/2017 23:59:59" DECLARE @dataInicio DATETIME = DATEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), 1); DECLARE @Data DATETIME = '2017-12-06'; WITH Dados AS (SELECT @dataInicio Dia UNION ALL SELECT DATEADD(DAY, 1, R.Dia) FROM Dados R WHERE R.Dia < DATEADD(DAY, -1, @Data) ), Intervalo AS (SELECT PrimeiroDia = FIRST_VALUE(R.Dia) OVER (ORDER BY (SELECT NULL)), R.Dia, UltimoDIa = LAST_VALUE(R.Dia) OVER (ORDER BY (SELECT NULL)) FROM Dados R ) SELECT I.Dia, I.PrimeiroDia, I.UltimoDIa, Texto = CONCAT( FORMAT(I.PrimeiroDia,'dd/MM/yyyy HH:mm:ss'), SPACE(1), 'à', SPACE(1), FORMAT(I.UltimoDIa,'dd/MM/yyyy 23:59:59') ) FROM Intervalo I OPTION (MAXRECURSION 0);
Wesley Neves - Brasilia-DFhttps://wesleyneves.wordpress.com/
SELECT Tab.[that's me:]
FROM
(
VALUES
('Wesley Neves'),
('Analista.NET'),
('Pós Graduando em Banco de Dados com ênfase em BI'),
('MTA -SQL Server'),
('MTA -Web Developed')
) AS Tab ("that's me:");
"Se a resposta for útil ou ajudar ,não esqueça de marcar"
Wesley Neves
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 11 de dezembro de 2017 13:10
-
DECLARE @DataHoje DATETIME
SET @DataHoje = '03/10/2017'
SELECT
DtLancto
FROM
TbMovToCon
WHERE
(Day(DtLancto) >= 1) and (Day(DtLancto) <= day(@DataHoje)) and
(month(DtLancto) = month(@DataHoje)) and
(Year(DtLancto) = Year(@DataHoje))
ORDER BY DtLancto -
Deleted
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 11 de dezembro de 2017 13:10