Dúvida com QTimer e QDateTime



  • Olá estou tentando fazer um timer que a cada 24 horas verifique se os agendamentos do meu banco não foram atualizados. Caso aconteça isso, eu preciso atualizar meu banco de dados para o dia seguinte.

    O que acontece é que estou trabalhando sem tempo de zona(without zone)

    Ai utilizo o QDateTime:: currentTimeUtc()

    mas na hora de imprimir aparece a hora...

    alguém sabe o porque?

    posso postar o código se alguém souber melhor do assunto.

    obrigado!



  • Pode postar.



  • @ connect(&_timer, SIGNAL(timeout()), this, SLOT(mostraHora()));
    _timer.setSingleShot(false);
    _timer.setInterval(1000*5);
    _timer.start();

    }

    void ExecutaHora::mostraHora(){

    QProcess myProcess;
    myProcess.execute("date");
    
    ConsultaBD consultaBD;
    consultaBD.atualizaBd();
    

    }@

    @void ConsultaBD::atualizaBd(){

    AgendamentoModel agendamentoEspecial;
    agendamentoEspecial.updateAgendamento();
    

    }@

    @void AgendamentoModel::updateAgendamento(){

    QDateTime hoje =  QDateTime::currentDateTimeUtc();
    
    QDateTime amanha = QDateTime::currentDateTimeUtc().addDays(1);
    
    QString sql = "UPDATE agendamento SET data = ? WHERE data < ? AND regra >= 5";
    
    QSqlQuery query = prepareQuery(sql);
    
    query.addBindValue(amanha);
    query.addBindValue(hoje.currentDateTimeUtc());
    
    //qDebug() << "amanha = " << amanha;
    //qDebug() << "hoje = " << hoje;
    
    if(query.exec&#40;&#41;&#41;{
        qDebug() << "#EXECUTOU QUERY AGENDAMENTO-UPDATEAGENDAMENTO#";
    }else
        qDebug() << "#NAO EXECUTOU QUERY AGENDAMENTO-UPDATEAGENDAMENTO#";
    

    }@

    A saida esta vindo sempre com hora... eu não quero as horas, foi por isso que tentei usar o Utc ali no currentTime... but.. não ta dando.. ta vindo com hora.

    O mais engraçado é que meu banco de dados ele tem na definição without time zone.. ou seja, nao devia aceitar o preenchimento do campo, certo? ai em vez de ficar 00:00:00 fica com alguma hora marcada.. :(



  • Qual a definição da coluna no seu banco de dados? É MySQL, SQLite ou PostgreSql?

    Você pode tentar fazer bind da variável "amanha" assim:

    @
    query.addBindValue(amanha.date());
    @

    O date() retorna um QDate.



  • Tentei isso já. Utilizo o postgresql. Amanha encontro com meu companheiro de equipe ai ele tem mais experiência... obrigado pelo retorno TIoRoy!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.