ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Alterar ano no firebird? {Resolvido}

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Set 17, 2014 11:08 am    Assunto: Alterar ano no firebird? {Resolvido} Responder com Citação

Como fazer um update somente do ano no firebird

Tentei assim, mais não rolou
Código:
update clientes
set ultima_edicao =
 EXTRACT(year FROM ultima_edicao) || '2005'
where extract(year from ultima_edicao) >= '2014'


Obrigado
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree


Editado pela última vez por adriano_servitec em Qua Set 17, 2014 11:46 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Set 17, 2014 11:30 am    Assunto: Responder com Citação

Acho que consegui

sintaxe

Código:
UPDATE clientes
SET ultima_edicao =
  CAST('2005-' ||
        EXTRACT(month from ultima_edicao) || '-' ||
        EXTRACT(day from ultima_edicao)  as DATE)
where extract(year from ultima_edicao) >= '2014'

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Set 17, 2014 11:49 am    Assunto: Responder com Citação

Bom dia,

Acho que a possibilidade é pequena, mas pode ocorrer um erro da forma como você postou se o campo tiver o dia 29 de fevereiro e o novo ano não for bissexto.
Segue uma outra sugestão:

Código:
SET ultima_edicao =
    DATEADD(YEAR, 2005 - EXTRACT(YEAR FROM ultima_edicao), ultima_edicao)


Espero que ajude.


Editado pela última vez por imex em Qua Out 04, 2023 3:36 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Set 17, 2014 12:54 pm    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Acho que a possibilidade é pequena, mas pode ocorrer um erro da forma como você postou se o campo tiver o dia 29 de fevereiro e o novo ano não for bissexto.
Segue uma outra sugestão:

Código:
SET ultima_edicao =
    DATEADD(YEAR, 2005 - EXTRACT(YEAR FROM ultima_edicao), ultima_edicao)


Espero que ajude.
Olá boa tarde Imex,

Desta forma ai fui testar e deu erro, uso o firebird 1.5
Código:
UPDATE clientes
SET ultima_edicao =
    DATEADD(year, 2005 - EXTRACT(YEAR FROM ultima_edicao), ultima_edicao)
where extract(year from ultima_edicao) >= '2001'


Erro
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, char 13.
year.

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Set 17, 2014 2:22 pm    Assunto: Responder com Citação

O erro deve estar na função DateAdd que está disponível a partir da versão 2.1.
Acho que na versão 1.5 poderia ser utilizada a função addYear da fbudf:

Código:
SET ultima_edicao =
    addYear(ultima_edicao, 2005 - EXTRACT(YEAR FROM ultima_edicao))


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Set 17, 2014 4:39 pm    Assunto: Responder com Citação

imex escreveu:
O erro deve estar na função DateAdd que está disponível a partir da versão 2.1.
Acho que na versão 1.5 poderia ser utilizada a função addYear da fbudf:

Código:
SET ultima_edicao =
    addYear(ultima_edicao, 2005 - EXTRACT(YEAR FROM ultima_edicao))


Espero que ajude.
Com a udf funcionou Imex, obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB