Formatar Data e Salvar mySQL?

4 respostas
E

Estou usando struts,

e o usuario digita um data no formato: dd/MM/yyyy pego esta data como uma String… depois tento converter para java.sql.Date (NAO CONSIGO FAZER ESTA CONVERSÃO) para salvar o banco de dados

O outro problema é que na hora de salvar no mysql ele utiliza outro formato(yyyy/MM/dd)

OBRIGADO

4 Respostas

G

ola edprado, tudo bem?

Bom vc pega dd/mm/yyyy em uma variavel string? se for faça assim:

// vamos quebrar aqui a sua data
		String[] data = "01/01/2007".split("/");

		// agora vamos converter pra long
		int ano = Integer.parseInt(data[2]) - 1900;
		int mes = Integer.parseInt(data[1]);
		int dia = Integer.parseInt(data[0]);

		// agora é só instanciar a Date de java.sql
		java.sql.Date newDate = new java.sql.Date(ano, mes, dia);


		// bom uso da sua variavel Date no formato sql
		System.out.println(newDate);

se entendi bem essa era sua duvida…
espero ter ajudado… no mais… posta ai…
[]'s
Geraldo Barboza

N

Desculpem minha ignorância. Mas esse código funciona mesmo?

O que é esse .split("/") ?
e int ano = Integer.parseInt(data[2]) - 1900; Ele não vai pegar somente o valor contido na terceira posição do array? E porque diminuir de 1900?

E um objeto do tipo java.sql.Date pode ser criado recebendo 3 números inteiros na sua construção?

S

Opa tenta assim

Date minhaData = new Date(); long mili = minhaData.getTime(); java.sql.Date dataSQL = new java.sql.Date(mili);

Ai é só salvar a data sql.[/code]

J

Você não precisa se preocupar com formato de data ao salvar em um banco de dados, o driver já cuidará desses detalhes pra você.

Pra formatar a data pra exibir, é só usar um SimpleDateFormat:

SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
Date data = new Date();

String dataFormatada = formatador.format(data);

Pra criar um java.util.Date a partir de uma String:

SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
String str = "09/01/2007";

Date data = formatador.parse(str);

//salvar no banco
PreparedStatement stmt = conexao.prepareStatement("insert into tabela(nome, campo_data) values (?, ?)");

stmt.setString(1, "Jair");
stmt.setDate(2, new java.sql.Date(data.getTime()));
[/url]
Criado 8 de janeiro de 2007
Ultima resposta 9 de jan. de 2007
Respostas 4
Participantes 5