none
Replicar dados trocando o ano da data RRS feed

  • Pergunta

  • Olá, gostaria de saber como faço para duplicar na mesma tabela todos registros onde a data tiver o ano de 2008 e trocar para 2009.

    terça-feira, 20 de janeiro de 2009 17:51

Respostas

  • Eduardo,

     

    Veja se este exemplo ajuda:

     

    Declare @Tabela Table

    (Codigo Int Identity(1,1),

    Data DateTime)

     

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Select * Into #Ano2009 from @Tabela

    Where Year(Data)=2008

    Update #NomeTabela

    Set Data=Convert(Char(10),Day(Data))+'/'+Convert(Char(10),Month(Data))+'/2009'

    Insert Into @Tabela

    Select Data from #Ano2009

    Select * from #NomeTabela

     

     

    terça-feira, 20 de janeiro de 2009 18:39
  • Boa Tarde,

     

    Eu faria de outra forma (possivelmente mais performática por conta da utilização de uma índice em Data se houver).

     

    Code Snippet

    declare @t table (data smalldatetime)

     

    insert into @t values ('20080608 19:00')

    insert into @t values ('20090608 20:00')

    insert into @t values ('20060608 10:00')

    insert into @t values ('20070608 13:00')

    insert into @t values ('20080608 15:00')

     

    insert into @t

    select dateadd(yy,1,data) from @t

    where data >= '20080101' and data < '20090101'

     

    select * from @t

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

    terça-feira, 20 de janeiro de 2009 18:59

Todas as Respostas

  • Eduardo,

     

    Veja se este exemplo ajuda:

     

    Declare @Tabela Table

    (Codigo Int Identity(1,1),

    Data DateTime)

     

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-365)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Insert Into @Tabela Values (GetDate()-730)

    Select * Into #Ano2009 from @Tabela

    Where Year(Data)=2008

    Update #NomeTabela

    Set Data=Convert(Char(10),Day(Data))+'/'+Convert(Char(10),Month(Data))+'/2009'

    Insert Into @Tabela

    Select Data from #Ano2009

    Select * from #NomeTabela

     

     

    terça-feira, 20 de janeiro de 2009 18:39
  • Boa Tarde,

     

    Eu faria de outra forma (possivelmente mais performática por conta da utilização de uma índice em Data se houver).

     

    Code Snippet

    declare @t table (data smalldatetime)

     

    insert into @t values ('20080608 19:00')

    insert into @t values ('20090608 20:00')

    insert into @t values ('20060608 10:00')

    insert into @t values ('20070608 13:00')

    insert into @t values ('20080608 15:00')

     

    insert into @t

    select dateadd(yy,1,data) from @t

    where data >= '20080101' and data < '20090101'

     

    select * from @t

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

    terça-feira, 20 de janeiro de 2009 18:59