Estou fazendo uma tela onde o cliente vai informar a data, o atendimento que foi feito, o cliente que foi atendido, etc.
Assim que o jInternalFrame é aberto eu coloco a data atual, mas o usuário pode alterá-la.
Só que na hora de passar pro BD dá o seguinte erro:
Já tentei alterar o separador da data para ‘-’ mas tbm não funcionou.
E no bd eu preciso da data com formato date porque depois vai ser a data o meu filtro na hora de gerar o relatório do dia.
Qual seria a melhor forma de fazer isso??
Ou seria melhor no bd criar um campo, dia, mês e ano pra depois na hora de jogar a query jogar o “Order by”?
Na tabela está como Date mesmo!
Pq se estivesse como varchar ele teria comportamento de String e na hora da pesquisa, certo??
O meu código para inserir a data é:
//rorina par inserir data atual ao novo registro
Date data = new Date();
String dia = ""+data.getDate();
String mes = ""+String.valueOf(data.getMonth()+1);
String ano = ""+(1900 + data.getYear());
if (Integer.parseInt(mes)<=9)
mes="0"+mes;
txtDataCadOrc.setText(dia+"-"+mes+"-"+ano);
Ao alterar o txtDataCadOrc para txtDataCadOrc.setText(ano+"-"+mes+"-"+dia);
Funcionou, só que existe alguma forma de só na exibição do jInternalFrame ele exibir dia-mês-ano??
jakefrog por o que eu entendi no banco está no formato para datas realmente
Então acho que no caro o que você está fazendo de errado acbucard é passar uma string direramente para o banco por o que percebi quando você fala
Tenta em vez de passar a string transformar ela em java.util.Date utilizando o SimpleDateFormat e posteriormente passando para o banco, assim provavelmente irá dar certo.
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date data = dateFormat.parse(dataString);
acbucard.O mysql só aceita,por padrão, datas no formato "20120119"
que é o padrão americano.
Segue a dica de CharlesAlves que é a melhor opção ou
então muda a data para este formato que da certo.
Outra solução seria mudar o charset do field diretamente no banco, mas eu nao recomendo!
Para usar o SimpleDateFormat qual pacote eu teria que importar? Pois está dando erro que não encontra a Classe.
Obs: o java.ultil.Date já está importado!
dariogondim = Eu estava procurando no site do mysql mas também não estava conseguindo.
Desculpem a ignorância, mas tem mais de um ano e meio que terminei meu técnivco e desde então não mexia com Java e quis voltar a estudar.
Agradeço a atenção.
dataString seria a data que o usuario digita, pois ela eh uma string, dae vc vai usar o parse para converter essa string em um objeto Date para enviar para o banco. ex:
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String dataString = "19/01/2012";
// d agora eh um objeto do tipo Date
Date d = df.parse(dataString);
Significa que o método lança uma exceção que deve ser tratada!
e voce pode resolver escolher tratar dentro do método mesmo,ou delegar a responsabilidade
de tratar o erro para o metodo que chamar este metodo:
Para tratar circunde com isso:
[code] try {
Date d = df.parse(dataString);
} catch (ParseException ex) {
Logger.getLogger(GerenciadorMascaras.class.getName()).log(Level.SEVERE, null, ex);[/code]
Para dar a responsabilidade de tratar a o outro método adicione a palavra “throws” no final do cabeçalho do método
public void parseData throws ParseException()
{
}
Mas vc tera que adicionar o try-catch circundando o método em algum lugar.
//converte String para data no formato especificado
public static Date strData(String mydata, String formato) {
Date data = null;
// String format = formato;
try {
//DateFormat dtOutput = new SimpleDateFormat("yyyy-MM-dd HH:mm");
DateFormat dtOutput = new SimpleDateFormat(formato);
data = dtOutput.parse(mydata);
}catch (ParseException e) {
e.printStackTrace();
}
return data;
}
elanod = Muito obrigada pelo código.
Mas consegui resolver apenas com o substring.
Até pq não sei quando o usuário vai cadastrar os serviços, daí perco o meu tempo fazendo um código lindo
e ele nem usar.