Alterar registro com base em uma data

Prezados, muito boa noite!

Gostaria de saber se no MySQL é possível eu alterar uma chave de um registro com base em uma data.
Tenho as chaves DATA_INICIAL, DATA_FINAL, DATA_CHEGADA e STATUS em uma tabela.
Gostaria de alterar o conteúdo do STATUS com base nos campos de data:

Se DATA_CHEGADA vier depois de DATA_FINAL: STATUS = “EM ATRASO”;
Se DATA_CHEGADA vier antes de DATA_FINAL: STATUS = “NO PRAZO”;

Não sei se convém fazer isso no banco (se for possível) ou no programa Java.
Não sei qual seria mais viável.

Minha ideia posteriormente seria montar um sistema que envie e-mails diariamente com base no campo status. Por isso, acho que se desse pra fazer direto no banco, seria o ideal.

Mas caso não dê, podem me dar alguma ideia de como implementar isso em Java.
Agradeço!

Alguém?

O melhor seria implementar isso no java, se você fizer a migração de banco corre o risco de esquecer essa função.

No java basta trabalhar com o quartz, ele ja vai executar oque quer de tempos em tempos e enviar os emails, caso queira.

Campelo, mas é possível fazer isso usando aplicação desktop?
E se o servidor não ficar online todo o tempo?

Da pra fazer isso no banco sim, basta apenas você executar um UPDATE com uma condição WHERE entre as datas.

UPDATE tablename SET status = ‘EM ATRASO’ WHERE DATA_CHEGADA > DATA_FINAL

UPDATE tablename SET status = ‘NO PRAZO’ WHERE DATA_CHEGADA < DATA_FINAL

Acho que isso vai funcionar.

1 curtida

Sim, da pra usar o quartz em ambiente desktop.
Mesmo que o server seja desligado, quando ele ligar e subir a aplicação sera executado as funções definidas.

Não disse que não era possível fazer no banco, o melhor sempre é cada um ter a sua responsabilidade.

  1. Em caso de migração, tem que fazer a mesma coisa no outro banco.(passivel de esquecimento).
  2. Algum dia pode-se mudar a regra e o cara que fez isso no banco não esta mais na empresa.
  3. Conforme foi dito, é necessário enviar um e-mail avisando sobre o status.

Obrigado Rodrigo, mas a questão é o agendamento.
Isso tem que ser feito diariamente.

Campelo, pelo que andei pesquisando, o quartz é uma biblioteca externa do Java.
Mas a maioria aponta para aplicações web.
Teria algum material para me indicar sobre a aplicação dele em desktop?

E no caso, sua sugestão seria usá-lo para fazer o update diário no registro do banco né?

Sim, mas basta voce add o jar no seu projeto independentemente se é web ou desktop .

tutorial sim: https://www.mkyong.com/java/quartz-2-scheduler-tutorial/

Sim, seria diario ou ate mesmo de 5 em 5 minutos, o quartz é versatil para voce escolher que minuto, horas, dias, mes, ano que ele vai ser executado.

1 curtida

Obrigado pela atenção Campelo.