Re:Busca &gt data

faça algo como:

   SimpleDateFormat dataSQL = new SimpleDateFormat("yyyy-MM-dd");
   dataSQL.format(new Date());

ao invéz de new Date() passe a sua data;
sua sql ficaria assim:

   SimpleDateFormat dataSQL = new SimpleDateFormat("yyyy-MM-dd");
   PreparedStatement stmt = con.prepareStatement("select * from tb_cortesia where data >= " + dataSQL.format(suaData) );

acho q isso pode ajudar! desculpe se falei besteria! :smiley:

Tente assim:

Date date = new Date("10/05/2005");
formatter = new SimpleDateFormat("yyyy-dd-MM");
System.out.println(formatter.format(date));

Mais detalhes:

http://www.exampledepot.com/egs/java.text/FormatDate.html

Bom, uma forma seria vc passar por cada um dos registros retornados e formatar a data usando o mesmo esquema anterior mas usando (“dd/MM/yyyy”) no new Simple… .

rertornar formatado como vc quer, sinceramente nao sei fazer! desculpe!
na verdade nao trabalho com mysql.
espero ter ajudado!

usa preparedstatement que nao tera que se preocupar com essas formatações…

ae vc usa ? no lugar dos dados e quando vc usar atribuir o valor com

stm.setDate();
smt.SetString();
stm.setBlaBlaBla…

select to_date(campo,‘formato’) as suaData ou to_char.

:shock:
kra a mascara é “yyyy-MM-dd” ou “dd/MM/yyyy”!
a mascará q vc passo ta errada por isso da exception!
se vc fizer debug, vai dar exception qnd faz o dataSQL1.format(“10/10/2005”) pq o dado passado nao ta no padrao especificado e ele nao consegue converter
mais um detalhe

SimpleDateFormat dataSQL1 = new SimpleDateFormat("yyyy/MM/dd"); dataSQL1.format(new Date()); System.out.println(dataSQL1.format("10/10/2005"));
o dataSQL1.format(new Date()); ja pego uma data(formato TimeStamp = 2007-01-09 00:00:00.000) e formatou retornando pra vc 09/01/2007 como string.
O que vc teria q fazer seria o seguinte

SimpleDateFormat dataSQL1 = new SimpleDateFormat("yyyy/MM/dd"); String s = dataSQL1.format(new Date());
ou

SimpleDateFormat dataSQL1 = new SimpleDateFormat("yyyy/MM/dd"); String s = dataSQL1.format("10/10/2005");
usa o “s” passando na tua sql!
tenta passar a mascara correta e passa o parametro!

Ola!!! Uma solução:

//Formato da sua data
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
// sua data
String mydate = "10/10/2008";

//converte a String em java.util.Date
java.util.Date date = sdf.parse(mydate);

//como não é suportado java.util.Date e sim java.sql.Date
//então convertemos...
java.sql.Date mysqldate = new java.sql.Date(date.getTime());

java.sql.PreparedStatement ps = con.prepareStatement("select * from tb_cortesia where data >= ?");
ps.setObject(1,mysqldate);

//executa a query e retorna o resultado da pesquisa
java.sql.ResultSet result = ps.executeQuery();

Não testei o código!! Se existir algum erro, será com relação aos comando e não a execução da query no bd.

Outra solução:
Se o banco de dados suporta a data no formato yyyy-MM-dd e vc esta usando no formato dd/MM/yyyy, basta converter as datas…

//Formato da sua data
SimpleDateFormat sdf  = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat sqlf = new SimpleDateFormat("yyyy-MM-dd");
// sua data
String mydate = "10/10/2008";
//data no formato que o bd suporta
String mysqldate = "";

//converte a String em java.util.Date
java.util.Date date = sdf.parse(mydate);

//converte o date no formato suportado...
mysqldate = sqlf.format(date);

//st = Statement

java.sql.ResultSet result = st.executeQuery("select * from tb_cortesia where data >= "+mysqldate)

[quote=everson_z]
Tem coisa errada…


	public static void main (String args []){
		try{
			
		
			String formato = "dd/MM/yyyy";	
			SimpleDateFormat formatarData = new SimpleDateFormat(formato); 
			formatarData.format(new Date());
			System.out.println(formatarData.format("10/10/2005"));

		}catch(Exception e){
			System.out.println(e.getMessage());
		}
	}

[color=red]ERRO:
Cannot format given Object as a Date[/color]

[/quote]

claro q tem! agora q eu vi direito o código!

System.out.println(formatarData.format(“10/10/2005”));
o formatarData.format(“10/10/2005”) pede um date, tenta por um date ae pra testar!

O mysql deixa a data em 0000-00-00 e minha aplicação esta 00/00/0000… como faço p/ fazer uma busca assim?

PreparedStatement stmt = con.prepareStatement(“select * from tb_cortesia where data >= 10/10/2008” );

Assim eu sei que num é… rs

Humm
Legal…
O problema é que ele volta as datas no padrão US…

Sabem no sql como faço p/ cria a data em 00/00/0000 ?

vlw

Eu fiz assim, foi o que entendi do cod de vcs

SimpleDateFormat dataSQL1 = new SimpleDateFormat("yyyy/MM/dd"); dataSQL1.format(new Date()); System.out.println(dataSQL1.format("10/10/2005"));
[color=red]
java.lang.IllegalArgumentException: Cannot format given Object as a Date
java.text.DateFormat.format(Unknown Source)
java.text.Format.format(Unknown Source)
br.com.curves.dao.BeanCortesia.setBuscaCortesia(BeanCortesia.java:122)
br.com.curves.model.MostraCortesia.doPost(MostraCortesia.java:25)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

[/color]


Tem coisa errada…


	public static void main (String args []){
		try{
			
		
			String formato = "dd/MM/yyyy";	
			SimpleDateFormat formatarData = new SimpleDateFormat(formato); 
			formatarData.format(new Date());
			System.out.println(formatarData.format("10/10/2005"));

		}catch(Exception e){
			System.out.println(e.getMessage());
		}
	}

[color=red]ERRO:
Cannot format given Object as a Date[/color]