none
Calcular diferença entre datas e alterar status automaticamente no banco de dados MYSQL e C# RRS feed

  • Pergunta

  • Bom dia Pessoal.Venho mais uma vez pedir ajuda.

    Preciso criar alguma rotina para calcular a diferença entre duas datas diretamente no banco de dados MySql e mudar o status de outro campo de acordo com essa diferença. Os campos do banco de dados são :

    1. Data Calibração,
    2. Vencimento Calibração,
    3. Status Calibração : Em dia, Calibrar, Vencida.

    Como faço para criar a rotina que pegue as duas datas faça o calculo da diferença e quando a data for superior a 30 dias o status seja "em dia", quando for inferior a 30 dias o status seja "Calibrar" e quando a data for maior que o campo "vencimento calibração" o status seja "Vencida" ?


    Philipe Khemil Said

    quarta-feira, 22 de junho de 2016 09:53

Respostas

  • Bom dia,

    Para subtrair datas e obter a quantidade de dias pode fazer assim:

    DateTime DataCalibracao = DateTime.Now.AddDays(-30);// Obter do banco
    DateTime DataVencimento = DateTime.Now;// Obter do banco
    TimeSpan diferenca = DataVencimento - DataCalibracao;
    int dias = (int)diferenca.TotalDays;
    if (dias > 30)
    {
        //Em dia
    }
    else if (dias > 0)
    {
        //Calibrar
    }
    else
    {
        //Vencida
    }
    

    Quanto a rotina, se vai rodar uma vez por dia uma sugestão seria agendar a tarefa. Você pode ainda criar um serviço para fazer isso (Windows Serviço), definindo assim de quanto em quanto tempo será feita a atualização.

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta Thales F Quintas quarta-feira, 22 de junho de 2016 14:13
    quarta-feira, 22 de junho de 2016 11:13

Todas as Respostas

  • Bom dia,

    Para subtrair datas e obter a quantidade de dias pode fazer assim:

    DateTime DataCalibracao = DateTime.Now.AddDays(-30);// Obter do banco
    DateTime DataVencimento = DateTime.Now;// Obter do banco
    TimeSpan diferenca = DataVencimento - DataCalibracao;
    int dias = (int)diferenca.TotalDays;
    if (dias > 30)
    {
        //Em dia
    }
    else if (dias > 0)
    {
        //Calibrar
    }
    else
    {
        //Vencida
    }
    

    Quanto a rotina, se vai rodar uma vez por dia uma sugestão seria agendar a tarefa. Você pode ainda criar um serviço para fazer isso (Windows Serviço), definindo assim de quanto em quanto tempo será feita a atualização.

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta Thales F Quintas quarta-feira, 22 de junho de 2016 14:13
    quarta-feira, 22 de junho de 2016 11:13
  • Muito Obrigado Silvaney. Vou aplicar o seu exmplo

    Philipe Khemil Said

    quarta-feira, 22 de junho de 2016 15:44