Usuário com melhor resposta
Montagem de período

Pergunta
-
Bom Dia!
Pessoal, estou eu aqui novamente precisando da ajuda de vcs.
Tenho que montar todos os dias de um período.
Exemplo: Período 15/02/2008 a 15/03/2008
tenho que retornar em linhas:
15/02/2008
16/02/2008
16/02/2008
...
14/03/2008
15/03/2008
Será que alguém pode me ajudar!
Desde já agradeço a atenção de todos!
Respostas
-
Boa Tarde,
Segue uma solução baseada em 2005. Se precisar de mais de 1.000 dias de intervalo, adicione um N4.
Code SnippetDECLARE
@DataInicial SMALLDATETIME, @DataFinal SMALLDATETIMESET
@DataInicial = '20080215'SET
@DataFinal = '20080315';WITH
Numeros (NUM) AS (SELECT 0 UNION ALL
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5 UNION ALL
SELECT 6 UNION ALL
SELECT 7 UNION ALL
SELECT 8 UNION ALL
SELECT 9 ),
RangeTotal
(Val) AS (SELECT
FROM
Numeros AS N1, Numeros AS N2, Numeros AS N3)SELECT
@DataInicial + Val FROM RangeTotalWHERE
DATEADD(DD,Val,@DataInicial) <= @DataFinalDá pra fazer usando tabelas temporárias e Loops, mas preferi fazer uma solução explorando os novos recursos
[ ]s,
Gustavo
Todas as Respostas
-
-
-
Boa Tarde,
Segue uma solução baseada em 2005. Se precisar de mais de 1.000 dias de intervalo, adicione um N4.
Code SnippetDECLARE
@DataInicial SMALLDATETIME, @DataFinal SMALLDATETIMESET
@DataInicial = '20080215'SET
@DataFinal = '20080315';WITH
Numeros (NUM) AS (SELECT 0 UNION ALL
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5 UNION ALL
SELECT 6 UNION ALL
SELECT 7 UNION ALL
SELECT 8 UNION ALL
SELECT 9 ),
RangeTotal
(Val) AS (SELECT
FROM
Numeros AS N1, Numeros AS N2, Numeros AS N3)SELECT
@DataInicial + Val FROM RangeTotalWHERE
DATEADD(DD,Val,@DataInicial) <= @DataFinalDá pra fazer usando tabelas temporárias e Loops, mas preferi fazer uma solução explorando os novos recursos
[ ]s,
Gustavo
-