Duvidas com pesquisa sql (DATA)

7 respostas
S

Ola pessoas sou novato to engatinhando no mundo sql ainda e minha duvida é a seguinte

tenho um jtextfield que recebe uma data no formato ##/##/#### ele pesquisa certinho, mas minha duvida é o seguinte, no meu codigo sql veja

"SELECT * FROM usuarios WHERE C_INCUSU < ?";
[code]

c_incusu é um campo de data que esta no banco e ? é o coringa do meu parametro eu precisava fazer um esquema em sql para ele receber uma data e mostrar apenas as datas que sao maiores que do parametro passado porem tentei assim

[code]
"SELECT * FROM usuarios WHERE C_INCUSU < ?";

e assim

"SELECT * FROM usuarios WHERE C_INCUSU > ?";

mas ele nao retorna o que eu quero alguem sabe o q fazer vlw.

7 Respostas

drsmachado

você quer todos os usuários que tenham sido cadastrado após determinada data?
Se for isso, a segunda query está correta

"SELECT * FROM usuarios WHERE C_INCUSU > ?";

O ideal é debugar e verificar o que o PreparedStatement está jogando ao banco para a consulta

S

tambem nao deu certo
tentei isso veja

SELECT * FROM usuarios WHERE C_INCUSU BETWEEN ? and ?

para no caso ele pesquisar entra as datas passadas por parametros

porem esta gerando esta exeção

java.sql.SQLException: The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.
drsmachado

O erro não tem a ver com a query e sim com a forma como os parâmetros são passados.
Pode postar o código que executa a query?

S

os parametros sao esses

(String dateI, String dateF)

as data vem assim dateI = 01/10/2010 dateF = 31/10/2010

qr.setString(1, dateI);
            qr.setString(2, dateF);
            rs = qr.executeQuery();
drsmachado

E as colunas, no banco de dados, são varchar ou date, datetime, timestamp?
Só utilize

qr.setString(1, dateI);

Se a coluna é String.
Se for date, datetime ou timestamp, faça o parse da String em Date (pode ser direto para java.sql.Date) e use

S

no banco é datetime

drsmachado

Sendo datetime, quando você passa uma String, ele não irá reconhecer.
Isso por que o formato de java.sql.Date, que é o formato “entendido” pelo banco de dados, é um e a String é outra.

O banco até tenta converter, mas não chega a uma conclusão plausível.
Isso por que a responsabildiade é da aplicação e não do banco.

Então, já sabe, faça o parse utilizando a classe DateFormat e então utilize o que falei anteriormente

Criado 4 de outubro de 2011
Ultima resposta 4 de out. de 2011
Respostas 7
Participantes 2