Erro em formatação de datas

8 respostas
C

Olá, bom dia. Estou quebrando cabeça com um problema, vejam o exemplo:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date dateI = (Date)format.parse("2011-05-01 00:00:00"); Date dateF = (Date)format.parse("2011-05-14 00:00:00");

Na hora de executar a query

Query query = session.createQuery( " from Evento where dataGravacao between " + dateI + " and " + dateF);

Dá o erro

unexpected token: May near line 1, column 52 [ from modelo.Evento where dataGravacao between Sun May 01 00:00:00 BRT 2011 and Sat May 14 00:00:00 BRT 2011]

A data não está indo no formato que eu executei nela. Alguma dica?
Grato, Carlos.

8 Respostas

Z111

Data sempre é um problema…

Eu sempre passo como parâmetro.

Supondo q vc está usando JPA, uma busca rápida no google trouxe um exemplo. http://www.java2s.com/Code/Java/JPA/DateTypeParameter.htm

Veja se ajuda…

C

Sendo mais simples, porque esta saída?

Mon May 02 00:00:00 BRT 2011

public class Teste {
	
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
			 Date date = format.parse("02/05/2011 00:00:00");
			 System.out.println(date);
	}

}
Z111
cmendes:
Sendo mais simples, porque esta saída?

Mon May 02 00:00:00 BRT 2011

public class Teste {
	
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
			 Date date = format.parse("02/05/2011 00:00:00");
			 System.out.println(date);
	}

}

porque esta é o formato padrão do date.toString() [url]http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Date.html[/url] (ver método toString())

vc está lendo um formato String e atribuindo valor a um objeto java.util.Date. Quando vc recupera o valor sem formatar, ele pegará o formato padrão do método toString() (vide link)

C

Cara, como eu passo um valor Date para realizar pesquisa num banco de dados então, a partir de um valor String? Na realidade eu já recebo datas na execução do método, só que elas não estão formatadas, aí dá erro na execução da query.

unexpected token: Jun near line 1, column 52 [ from modelo.Evento where dataGravacao between Wed Jun 01 00:00:00 BRT 2011 and Wed Jun 15 00:00:00 BRT 2011]

public List<Evento> getLista(Date dataInicial, Date dataFinal) throws ParseException { List<Evento> eventos = new ArrayList<Evento>(); Query query = session.createQuery( " from Evento where dataGravacao between " + dataInicial + " and " + dataFinal);

Por isto preciso formatar as datas…

Z111

Qual o banco de dados e qual o tipo (date, timestamp, datetime…)

C

Oracle
private Calendar dataGravacao;

Na verdade eu estou usando Web Service. Aqueles parâmetros dataInicial e dataFinal são recebidos via Web Service, serão utilizados prá recuperar registros no Oracle e retornar para jsp…

Z111

http://forums.devshed.com/oracle-development-96/select-all-dates-between-two-dates-92997.html

pmlm

Não precisas de formatar as datas se seguires o que já te foi sugerido atrás…

Query query = session.createQuery( " from Evento where dataGravacao between :dataInicial and :dataFinal"); query.setParameter("dataInicial", dataInicial, TemporalType.DATE); query.setParameter("dataFinal", dataFinal, TemporalType.DATE);

Criado 15 de junho de 2011
Ultima resposta 15 de jun. de 2011
Respostas 8
Participantes 3