bom, estou com um problema em pegar um valor de uma data e diminuir 1 dia aproximadamente, pode ser 24 horas, 3600 min o jeito que for rssss.
Jah nao consigo com o comando SQL pq qdo coloco - 1 ele ransforma em string ( no mysql) e tira 1 segundo, mas independentemente disso nao posso calcular isso no select, pq o sistema tem que conectar com qualquer banco, por isso nao posso usar funcao de nenhum banco.
Tem alguma forma de pegar o max(date) colocar no util.date e nele diminuir 1 dia e depois colocar em outro select usando a variavel armazenada, nao consegui fazer isso, alguem tem uma funcao para isso?
Se puder postar acho que vai ajudar muita gente, muito agradecida!
help!!! :?
Dá uma olhada no método roll e o método add da classe Calendar
J
jricardo_so
importjava.util.Calendar;importjava.util.Date;importjava.util.GregorianCalendar;publicclassTesteData{publicstaticvoidmain(Stringargs[]){GregorianCalendargc=newGregorianCalendar();//data atual do sistemagc.setTime(newDate());System.out.println(gc.getTime());//adiciona um dia à data atualgc.roll(Calendar.DATE,-1);System.out.println(gc.getTime());}}
L
leandroqbs
ela pediu pra retirar um dia e não somar um dia… utilize o método roll e nã o add
Paulinha_NEXT
desculpa nao compreendi nunca usei ele, tentei usar e nao deu nada… soh alguns erros, como iniciante aqui, vou colocar oq eu fiz, pra ver se esclarece.
Connection conexao = dao.getConnection();
Date dataAux;
Double totalHD = 0.01;;
Double totalHD1 = 0.01;
Double totalHD2 = 0.01;
try {
String SQL ="SELECT max(st_ultimo_inv) as dataaux FROM estacao ";
PreparedStatement ps = conexao.prepareStatement(SQL);
ResultSet resultado = ps.executeQuery();
while(resultado.next()){
dataAux = resultado.getDate("dataaux");
}
resultado.close(); //Fecha o resultSet para liberar recursos alocados
com isso eu pego a data do ultimo registro porem nao consigo diminuir o 1 dia.
agradeço aos que responderam , e por favor tenham um pouco de paciencia
Paulinha_NEXT
eu cheguei ate isso:
String SQL ="SELECT max(dt_ultimo_inv) as dataaux FROM estacao ";
PreparedStatement ps = conexao.prepareStatement(SQL);
ResultSet resultado = ps.executeQuery();
while(resultado.next()){
dataAux = resultado.getDate("dataaux");
}
Calendar c = Calendar.getInstance();
c.setDate(dataAux); // erro no setDate
c.roll(Calendar.DATE, -1);
dataAux = c.getDate(); //erro no getDate
resultado.close();
fiz comentario dos 2 erros… parece que falta algum import mas nao sei qual eh…
Luiz_Aguiar
faltando import? que erro esta dando Paula?
Paulinha_NEXT
importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Date;importjava.util.Calendar;importdb.DAO;importdb.DAOException;publicclassAlertaGeralDAO{privateDAOdao;publicAlertaGeralDAO(){dao=DAO.getInstance();}publicDoublegetAlertaGeralHD()throwsDAOException{Connectionconexao=dao.getConnection();DatedataAux;DoubletotalHD=0.01;;DoubletotalHD1=0.01;DoubletotalHD2=0.01;try{StringSQL="SELECT max(dt_ultimo_inv) as dataaux FROM estacao ";PreparedStatementps=conexao.prepareStatement(SQL);ResultSetresultado=ps.executeQuery();while(resultado.next()){dataAux=resultado.getDate("dataaux");}Calendarcalendar=Calendar.getInstance();calendar.setTime(dataAux);calendar.add(Calendar.DATE,-1);dataAux=calendar.getTime();
jah descobri que nao existe o setDate e o getDate no Calendar por isso evolui para isso ai.
agora sim nao sei onde ta o erro.
diz assim
“dataAux = calendar.getTime();” “Type mismatch: cannot convert from Date to Date”
Luiz_Aguiar
importjava.sql.Date;
Paula, utilize:
importjava.util.Date;
Paulinha_NEXT
muitissimo obrigada luiz mas deu outro erro agora
calendar.setTime(dataAux);
“The local variable dataAux may not have been initialized”
andredeividi
SELECT DATE_ADD('1998-01-02', INTERVAL -1 DAY);
Espero ter ajudado
Luiz_Aguiar
Paulinha NEXT:
muitissimo obrigada luiz mas deu outro erro agora
calendar.setTime(dataAux);
“The local variable dataAux may not have been initialized”
vc precisa iniciar/instanciar a variável dataAux na sua declaração, pois se o resultado.next for falso, ela nunca receberá um valor.
Paulinha_NEXT
bom pessoal agradeço pela colaboracao que me deram, com certeza colocarei a resposta final pois haverá outroas como eu que precisarão disso
acho que conclui porem nao ta restornando um valor correto, deveria voltar um double em %. Antes dessa opercao de retornar 1 dia anterior e blablabla dava certo, agora fazendo com o que vcs fizeram parou de dar certo.
olha ai nosso resultado meninos:
publicclassAlertaGeralDAO{privateDAOdao;publicAlertaGeralDAO(){dao=DAO.getInstance();}publicDoublegetAlertaGeralHD()throwsDAOException{Connectionconexao=dao.getConnection();DatedataAux=null;Doubletot=0.01;;Doubletot1=0.01;Doubletot2=0.01;try{StringSQL="SELECT max(dt_ultimo_inv) as dataaux FROM estacao ";PreparedStatementps=conexao.prepareStatement(SQL);ResultSetresultado=ps.executeQuery();while(resultado.next()){dataAux=resultado.getDate("dataaux");}Calendarcalendar=Calendar.getInstance();calendar.setTime(dataAux);calendar.add(Calendar.DATE,-1);dataAux=calendar.getTime();resultado.close();//Fecha o resultSet para liberar recursos alocados 2007-05-11 16:29:50StringSQL1="SELECT count(*) as total1 FROM estacao ";PreparedStatementps1=conexao.prepareStatement(SQL1);ResultSetresultado1=ps1.executeQuery();while(resultado1.next()){tot1=Double.valueOf(resultado1.getFloat("total1"));}resultado1.close();//Fecha o resultSet para liberar recursos alocadosStringSQL2="SELECT count(*) as total2 FROM estacao WHERE dt_ultimo_inv > '"+dataAux+"'";PreparedStatementps2=conexao.prepareStatement(SQL2);ResultSetresultado2=ps2.executeQuery();while(resultado2.next()){tot2=Double.valueOf(resultado2.getFloat("total2"));}resultado2.close();//Fecha o resultSet para liberar recursos alocadostot=tot2/tot1;returntot;}catch(Exceptione){thrownewDAOException(e.getMessage());}finally{/* * Libera a conexão de volta para o Pool. */try{conexao.close();}catch(SQLExceptione1){thrownewDAOException(e1.getMessage());}}}}
Se alguem souber que raios ta acontecendo :oops:
Paulinha_NEXT
gente desculpa o codigo ta certinho , foi um problema de cache aqui que nao deixou eu ver o novo resultado, entao para quem precisa disso ta ai o codigo!
vlw a todos gujeiros!
Luiz_Aguiar
menos mal que era isso né Paula
depois marque como [resolvido] o tópico fazendo favor
Paulinha_NEXT
OPAAAA!! acho que tem uma observacao aqui pra fazer com minha pergunta!!