Usuário com melhor resposta
Inserir data

Pergunta
-
Galera tenho duas datas e gostaria de realizar um insert que preenchesse os valores do banco com datas entre essas duas datas informadas.
EX: data:10/10/2016 data2: 20/10/2016
o insert iria preencher com 11,12,13,14/10 etc.. no banco.
Como do esse comando.
Respostas
-
Boa noite,
SouthNew, segue uma outra sugestão para teste utilizando uma CTE recursiva:
declare @DataIni date; declare @DataFim date; set @DataIni = '20161010'; set @DataFim = '20161020'; with CTE_Datas as ( select @DataIni as Data union all select dateadd(day, 1, Data) from CTE_Datas where Data < @DataFim ) insert into Tabela (Data) select Data from CTE_Datas
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Robson William Silva quinta-feira, 8 de dezembro de 2016 11:32
Todas as Respostas
-
Nao existe comando nativo que faça isso. Para isto voce vai ter que criar uma StoreProcedure
att
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
O que da pra fazer e gerar as datas por exemplo
DECLARE @DataInicio DATETIME = DATEFROMPARTS(2016,10,10); DECLARE @DataTermino DATETIME = DATEFROMPARTS(2016,10,31); DECLARE @TableDatas TABLE ( datagerada DATETIME) WHILE (DATEDIFF(DAY,@DataInicio,@DataTermino) <> 0) BEGIN INSERT INTO @TableDatas ( datagerada ) VALUES ( @DataInicio -- datagerada - datetime ) SET @DataInicio = DATEADD(DAY,1,@DataInicio); END SELECT * FROM @TableDatas AS TD
Wesley Neves
-
Boa noite,
SouthNew, segue uma outra sugestão para teste utilizando uma CTE recursiva:
declare @DataIni date; declare @DataFim date; set @DataIni = '20161010'; set @DataFim = '20161020'; with CTE_Datas as ( select @DataIni as Data union all select dateadd(day, 1, Data) from CTE_Datas where Data < @DataFim ) insert into Tabela (Data) select Data from CTE_Datas
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Robson William Silva quinta-feira, 8 de dezembro de 2016 11:32
-
Boa noite,
SouthNew, segue uma outra sugestão para teste utilizando uma CTE recursiva:
declare @DataIni date; declare @DataFim date; set @DataIni = '20161010'; set @DataFim = '20161020'; with CTE_Datas as ( select @DataIni as Data union all select dateadd(day, 1, Data) from CTE_Datas where Data < @DataFim ) insert into Tabela (Data) select Data from CTE_Datas
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
muito boa essa alternativa, eu não conseguir fazer por CTE,parabéns
Wesley Neves
-
Obrigado Wesley. Abraço
Assinatura: http://www.imoveisemexposicao.com.br
-
@Gamipex
Vivendo e aprendendo... eu nao sabia que CTE podiam ser recursivos. Soluçao muito elegante.
Merece ser impressa, emoldurada e colocar na sala.
Obrigado
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
-
Obrigado William. Abraço
Assinatura: http://www.imoveisemexposicao.com.br
-