Olha pessoal mais uma vez eu!
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 
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TesteData {
public static void main(String args[]) {
GregorianCalendar gc = new GregorianCalendar();
//data atual do sistema
gc.setTime(new Date());
System.out.println(gc.getTime());
//adiciona um dia à data atual
gc.roll(Calendar.DATE, -1);
System.out.println(gc.getTime());
}
}
ela pediu pra retirar um dia e não somar um dia… utilize o método roll e nã o add
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 
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… 
faltando import? que erro esta dando Paula?
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import java.util.Calendar;
import db.DAO;
import db.DAOException;
public class AlertaGeralDAO
{
private DAO dao;
public AlertaGeralDAO(){
dao = DAO.getInstance();
}
public Double getAlertaGeralHD() throws DAOException
{
Connection conexao = dao.getConnection();
Date dataAux;
Double totalHD = 0.01;;
Double totalHD1 = 0.01;
Double totalHD2 = 0.01;
try {
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 calendar = 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”
muitissimo obrigada luiz mas deu outro erro agora
calendar.setTime(dataAux);
“The local variable dataAux may not have been initialized”
SELECT DATE_ADD('1998-01-02', INTERVAL -1 DAY);
Espero ter ajudado
[quote=Paulinha NEXT]muitissimo obrigada luiz mas deu outro erro agora
calendar.setTime(dataAux);
“The local variable dataAux may not have been initialized”[/quote]
vc precisa iniciar/instanciar a variável dataAux na sua declaração, pois se o resultado.next for falso, ela nunca receberá um valor.
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:
[code]
public class AlertaGeralDAO
{
private DAO dao;
public AlertaGeralDAO(){
dao = DAO.getInstance();
}
public Double getAlertaGeralHD() throws DAOException
{
Connection conexao = dao.getConnection();
Date dataAux = null;
Double tot = 0.01;;
Double tot1 = 0.01;
Double tot2 = 0.01;
try {
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 calendar = 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:50
String SQL1 ="SELECT count(*) as total1 FROM estacao ";
PreparedStatement ps1 = conexao.prepareStatement(SQL1);
ResultSet resultado1 = ps1.executeQuery();
while(resultado1.next()){
tot1 = Double.valueOf(resultado1.getFloat("total1"));
}
resultado1.close(); //Fecha o resultSet para liberar recursos alocados
String SQL2 ="SELECT count(*) as total2 FROM estacao WHERE dt_ultimo_inv > '" + dataAux + "'";
PreparedStatement ps2 = conexao.prepareStatement(SQL2);
ResultSet resultado2 = ps2.executeQuery();
while(resultado2.next()){
tot2 = Double.valueOf(resultado2.getFloat("total2"));
}
resultado2.close(); //Fecha o resultSet para liberar recursos alocados
tot=tot2/tot1;
return tot;
}catch(Exception e){
throw new DAOException(e.getMessage());
}finally{
/*
* Libera a conexão de volta para o Pool.
*/
try {
conexao.close();
}catch(SQLException e1){
throw new DAOException(e1.getMessage());
}
}
}
}[/code]
Se alguem souber que raios ta acontecendo :oops:
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! 
menos mal que era isso né Paula 
depois marque como [resolvido] o tópico fazendo favor

OPAAAA!! acho que tem uma observacao aqui pra fazer com minha pergunta!!
Esse metodo pode ser usado para campo datetime?
caso nao possa como resolveria com datetime?
(eu acho que nao hein!)