da um erro dizendo que não é possível executar a query. Sabe de alguma forma que eu possa resolver isso?
Quando você executa no banco da certo ?? só esta dando erro por JPA??
C
Cristiano_de_Barros
Boa tarde!
Acredito que você possa fazer o seguinte:
//...// Esta Query irá retornar a subtração da data atual pela data_geracao.PreparedStatementpstm=conn.prepareStatement("SELECT NOW() - data_geracao FROM registros WHERE data_geracao >= ?");// Recupera uma instância de Calendar contendo a data atual.Calendarcalendar=Calendar.getInstance();// Subtrai 10 minutos da data atual.calendar.add(Calendar.MINUTE,-10);// Define o parâmetro da Query com a data especificada.pstm.setDate(1,newjava.sql.Date(calendar.getTimeInMillis()));//...
Assim você buscaria todos os registros que possuem a data de geração maior ou igual a data que foi passada como parâmetro.
Como não tenho como testar aqui, não sei te dizer exatamente qual o tipo de retorno que esta query irá te trazer, mas acredito que seja um Timestamp mesmo.
Espero ter ajudado!
Abraço
M
malbarbosa
sim…quando eu executo no banco funciona. Só que eu tentei uma forma aqui e deu certo.
Fiz assim:
Stringjpql="select r.co_registro from abm.sbmtb007_registro as r "+"where ts_ocorrencia >= LOCALTIMESTAMP(1) - interval'"+configuracao.getTimeout()+" minutes' "+"and r.no_servico = 'consultar' "+"and r.co_servico = :numero "+"and r.co_terminal = :terminal "+"order by r.co_registro desc";
concatenei o valor com a string, não passei por parâmetro. É meio esquisito mas foi assim que funcionou. Depois vou parar com mais tempo para ver isso.
Mesmo assim obrigado!!
K
kbardock15
Cristiano de Barros:
Boa tarde!
Acredito que você possa fazer o seguinte:
//...// Esta Query irá retornar a subtração da data atual pela data_geracao.PreparedStatementpstm=conn.prepareStatement("SELECT NOW() - data_geracao FROM registros WHERE data_geracao >= ?");// Recupera uma instância de Calendar contendo a data atual.Calendarcalendar=Calendar.getInstance();// Subtrai 10 minutos da data atual.calendar.add(Calendar.MINUTE,-10);// Define o parâmetro da Query com a data especificada.pstm.setDate(1,newjava.sql.Date(calendar.getTimeInMillis()));//...
Assim você buscaria todos os registros que possuem a data de geração maior ou igual a data que foi passada como parâmetro.
Como não tenho como testar aqui, não sei te dizer exatamente qual o tipo de retorno que esta query irá te trazer, mas acredito que seja um Timestamp mesmo.
Espero ter ajudado!
Abraço
é uma boa solução, contudo tens que cuidar que a data do Banco esteja sincronizada com da aplicação.
C
Cristiano_de_Barros
kbardock15:
Cristiano de Barros:
Boa tarde!
Acredito que você possa fazer o seguinte:
//...// Esta Query irá retornar a subtração da data atual pela data_geracao.PreparedStatementpstm=conn.prepareStatement("SELECT NOW() - data_geracao FROM registros WHERE data_geracao >= ?");// Recupera uma instância de Calendar contendo a data atual.Calendarcalendar=Calendar.getInstance();// Subtrai 10 minutos da data atual.calendar.add(Calendar.MINUTE,-10);// Define o parâmetro da Query com a data especificada.pstm.setDate(1,newjava.sql.Date(calendar.getTimeInMillis()));//...
Assim você buscaria todos os registros que possuem a data de geração maior ou igual a data que foi passada como parâmetro.
Como não tenho como testar aqui, não sei te dizer exatamente qual o tipo de retorno que esta query irá te trazer, mas acredito que seja um Timestamp mesmo.
Espero ter ajudado!
Abraço
é uma boa solução, contudo tens que cuidar que a data do Banco esteja sincronizada com da aplicação.
É verdade, se a o banco de dados estiver em outra máquina por exemplo pode dar problema…
Para contornar este problema você pode acrescentar um novo parâmetro no lugar do NOW(), que seria um java.sql.Date contendo a data atual da aplicação.