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()){ 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!