Mauricio Pereira Postado Abril 22, 2010 Denunciar Share Postado Abril 22, 2010 (editado) Olá Pessoal...sou novo no fórum e gostaria muito da ajuda de vocês.preciso fazer um alteração em uma tabela de meu banco SQL..Vou explicar e mostrar após o que preciso..Preciso que um campo atualize vericando o outro campo.exemplo:tenho um campo que se chama datainicio e outro datafim.. sendo que preciso que estas datas tenham um período de um anode diferença.datainicio datafim22/4/2010 22/4/2011mas eu estou com um grande problema..tenho diversos campos que estão com a datafim diferentes da datainicio.exemplo:datainicio datafim22/4/2010 31/12/2010e é isso que eu preciso alterar.como posso fazer para que ele altere exatamente para um depois o campo datafim em relação o campo datainicio???sou novato em SQL e por isso pode ser que a minha pergunta seja um absurdo, por isso peço desculpas antecipadamente.se precisarem de mais informações é só falar ai...no aguardo de vocês..desde já agradeço.. :D Editado Abril 22, 2010 por Mauricio Pereira Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 23, 2010 Denunciar Share Postado Abril 23, 2010 Bom dia Mauricio, Utilize a sintaxe:update NomeTabela set datafim=(dateadd(year, 1, datainicio)) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mauricio Pereira Postado Abril 23, 2010 Autor Denunciar Share Postado Abril 23, 2010 bom dia Fulvio,muito obrigado pela resposta...então devo rodar este update direto no banco mesmo? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 23, 2010 Denunciar Share Postado Abril 23, 2010 Sim, deve rodar direto no Banco de Dados. Mas antes faça os testes para ver se está ok... :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mauricio Pereira Postado Abril 23, 2010 Autor Denunciar Share Postado Abril 23, 2010 Pessoal..verificando o meu problema me deparei com outro..acho que agora vai ficar pior .. rrsrrsro que o Fúlvio passou vai funcionar beleza.. mas eu vi que tem um porém...vou passar abaixo a imagem...eu tenho em algumas campos o ano diferente..vou precisar que aconteça o seguinte...tenho no banco alguns campos de datafim que foram inseridos erradamente..e são estas datas que eu preciso alterar...as datas inseridas erradas são as seguintes:2010-12-192010-12-202010-12-212010-12-292010-12-302010-12-31preciso que além de mudarem para um ano.que mudem onde o ano for de 2009 que mude para 2011 e onde for 2010 que também mude para 2011tudo isso na datafim..não sei me me entederem bem..qualquer coisa pode falar ai..desde já agradeço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 23, 2010 Denunciar Share Postado Abril 23, 2010 Depois de rodar o update para alterar a datafim acrescentando 1 ano (de acordo com a datainicio), alguns campos ficaram com data de 2009 e 2010? É isso? Agora você quer pegar as datas de 2009 e 2010 e colocar 2011? Se for isso, faça os testes com o script:-- Acrescenta 2 anos para datas de 2009 update NomeTabela set datafim=(dateadd(year, 2, datafim)) where year(datafim)=2009 -- Acrescenta 1 ano para datas de 2010 update NomeTabela set datafim=(dateadd(year, 1, datafim)) where year(datafim)=2010 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mauricio Pereira Postado Abril 23, 2010 Autor Denunciar Share Postado Abril 23, 2010 olá Fulvio..na verdade eu ainda não rodei o seu script...montei esse aqui com as informações que você me passou:update CARDSXUSERSXAPPLICATIONS set CRDUSRAPP_VALENDDATE=(dateadd(year, 1, CRDUSRAPP_VALSTADATE)) where year(CRDUSRAPP_VALENDDATE)=2010and CD_ID = 3 and APP_ID = 900AND CRDUSRAPP_VALENDDATE IN ('2010-12-19', '2010-12-20', '2010-12-21', '2010-12-30', '2010-12-31') --------------------------------------------------------------------------update CARDSXUSERSXAPPLICATIONS set CRDUSRAPP_VALENDDATE=(dateadd(year, 2, CRDUSRAPP_VALSTADATE)) where year(CRDUSRAPP_VALENDDATE)=2009and CD_ID = 3 and APP_ID = 900AND CRDUSRAPP_VALENDDATE IN ('2010-12-19', '2010-12-20', '2010-12-21', '2010-12-30', '2010-12-31') sendo que no primeiro update eu estarei mudando a data validade para um ano após a data de inícioonde a data de fim de validade for dentre aquelas citadas acima e o ano for de 2010.o de baixo estarei mudando a data validade para dois anos após a data de inícioonde a data de fim de validade for dentre aquelas citadas acima e o ano for de 2009.é isso mesmo ????pelo o que eu consegui entender acho que sim..me corrija por favor Fulvio..desde já agradeço a atenção concedida. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 23, 2010 Denunciar Share Postado Abril 23, 2010 Mauricio, Os dois updates estão filtrando apenas datas de 2010: ... AND CRDUSRAPP_VALENDDATE IN ('2010-12-19', '2010-12-20', '2010-12-21', '2010-12-30', '2010-12-31') Sendo assim, o 1º update retornará alguma alteração. O 2º update não terá nenhuma alteração, pois está filtrando datas apenas de 2010. O que você pode fazer: - Criar uma temporária com apenas as duas colunas (já filtrando os dados ...CD_ID = 3 and APP_ID = 900...) - "Updatar" todos os campos CRDUSRAPP_VALENDDATE utilizando o 1º update que postei. - "Updatar" apenas os campos CRDUSRAPP_VALENDDATE que possuem data de 2009 e 2010 para 2011 (neste update você não precisa referenciar o campo CRDUSRAPP_VALSTADATE. Utilize os dados do próprio campo CRDUSRAPP_VALENDDATE para alterar ele mesmo). - Depois de conferido as alterações, rode o script na tabela principal (não esquecendo de recolocar os filtros). Para ficar mais fácil o entendimento, criei uma tabela temporária e manipulei os dados nela. Copiei o script e faça os testes passo a passo:create table #Tabela (datainicio datetime, datafim datetime) insert into #Tabela (datainicio) values ('2008-10-03') insert into #Tabela (datainicio) values ('2008-05-01') insert into #Tabela (datainicio) values ('2009-04-23') insert into #Tabela (datainicio) values ('2009-01-23') insert into #Tabela (datainicio) values ('2010-01-15') insert into #Tabela (datainicio) values ('2010-02-10') -- Verifica as inserções select * from #Tabela -- Updata o campo datafim, levando em consideração o campo datainicio update #Tabela set datafim=(dateadd(year, 1, datainicio)) -- Verifica as alterações select * from #Tabela order by datafim -- Acrescenta 2 anos para datas de 2009. Perceba que não referencio mais o campo datainicio update #Tabela set datafim=(dateadd(year, 2, datafim)) where year(datafim)=2009 -- Acrescenta 1 ano para datas de 2010 update #Tabela set datafim=(dateadd(year, 1, datafim)) where year(datafim)=2010 -- Verifica as alterações select * from #Tabela order by datafim Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mauricio Pereira Postado Abril 23, 2010 Autor Denunciar Share Postado Abril 23, 2010 ok.. Fulvio.. vou fazer aqui e posto logo em seguida..obrigado pelo apoio... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mauricio Pereira Postado Abril 26, 2010 Autor Denunciar Share Postado Abril 26, 2010 bom dia Fúlvio...desculpe a demora..testei e funcionou bem direitinhoo...muito obrigado pela atenção...grande abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mauricio Pereira
Olá Pessoal...
sou novo no fórum e gostaria muito da ajuda de vocês.
preciso fazer um alteração em uma tabela de meu banco SQL..
Vou explicar e mostrar após o que preciso..
Preciso que um campo atualize vericando o outro campo.
exemplo:
tenho um campo que se chama datainicio e outro datafim.. sendo que preciso que estas datas tenham um período de um ano
de diferença.
datainicio datafim
22/4/2010 22/4/2011
mas eu estou com um grande problema..
tenho diversos campos que estão com a datafim diferentes da datainicio.
exemplo:
datainicio datafim
22/4/2010 31/12/2010
e é isso que eu preciso alterar.
como posso fazer para que ele altere exatamente para um depois o campo datafim em relação o campo datainicio???
sou novato em SQL e por isso pode ser que a minha pergunta seja um absurdo, por isso peço desculpas antecipadamente.
se precisarem de mais informações é só falar ai...
no aguardo de vocês..
desde já agradeço..
:D
Editado por Mauricio PereiraLink para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.