Select com Datetime(Resolvido)

5 respostas
ps.vale
Date data = 2010-07-26;

String gravaId = "update TABELA set id = ? where data = ' "+data + " ' ";
				ps = con.prepareStatement(gravaId);
				ps.setInt(1, rs.getInt("id")) ;
				ps.executeUpdate();

O Banco é SQL server 2000, e esta coluna é tipo datetime, ele trás vazio, pois no banco esta gravado com hora também...

como faço para comparar DateTime???
Obrigada

5 Respostas

ViniGodoy
Date data = 2010-07-26;

String gravaId = "update TABELA set id = ? where data = ?";
ps = con.prepareStatement(gravaId);
ps.setInt(1, rs.getInt("id")) ;
ps.setDate(2, data);
ps.executeUpdate();

Evite concatenar coisas com + quando estiver fazendo SQLs.

ViniGodoy

O que exatamente você quer fazer com o seu where?

Alterar o id de todos que forem do mesmo dia? E se tiver 2 em horas diferentes?
Uma alternativa é sempre gravar datas (se a hora não for relevante) com o mesmo horário. Isso facilita muito as comparações.

É a alternativa usada pelo Joda-Time:
http://joda-time.sourceforge.net/

Se você manipula muito datas, recomendo fortemente que use essa biblioteca no lugar do DateTime e do Calendar do Java.

ps.vale

Obrigada ViniGodoy, isso eu já havia tentado, e também não funcionou. Pois no banco estão gravados os dados de hora também, então ele não encontra pois esta apenas o dia, e não dia e hora.

No caso, estou migrando os dados de um banco para o outro, e quero inserir qual é o id do dado no novo banco de dados. Então, insiro o dado, e coloco o novo id, em uma coluna id migração, para ter o controle de qual dados foi para onde.

ViniGodoy

Então nesse caso você terá que fazer um intervalo de datas.

Date data1 = "2010-07-26";  
Date data2 = "2010-07-27";  

String gravaId = "update TABELA set id = ? where data >= ? AND data < data2";  
ps = con.prepareStatement(gravaId);  
ps.setInt(1, rs.getInt("id")) ;  
ps.setDate(2, data1);  
ps.setDate(3, data2);

Assim ele considera qualquer data gravada naquele dia, independente da hora. Aproveite que está migrando e no novo banco, grave num horário padrão só. Se o horário não é relevante, não tem pq grava-lo.

ps.vale

Funcionou, muito obrigada, era isso mesmo!
Estou limpando as datas sim, não tem relevância nenhuma no negócio.

Criado 20 de setembro de 2010
Ultima resposta 20 de set. de 2010
Respostas 5
Participantes 2