Olá galera,
Podem me ajudar em relação ajuste de data usando mysql?
Seguinte, o campo “data_entrada” do tipo (date) no mysql é formato yyyy-mm-dd.
Meu bean é assim:
import java.sql.Date;
public class Funcionario {
private String cargo;
private Integer codigo;
private Date entrada;
private String DataCadastroFormatado;
public String getCargo() {
return cargo;
}
public void setCargo(String cargo) {
this.cargo = cargo;
}
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public Date getEntrada() {
return entrada;
}
public void setEntrada(Date entrada) {
this.entrada = entrada;
}
public String getDataCadastroFormatado() {
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
DataCadastroFormatado = formato.format(getEntrada());
return DataCadastroFormatado;
}
}
E uso JSP, na tela consultafuncionario.jsp faço assim:
<%
List<Funcionario> funcionarios = (List<Funcionario>)request.getAttribute("funcionarios");
for(Funcionario funcionario: funcionarios){
%>
<tr>
<td><%=funcionario.getCodigo()%></td>
<td><%=funcionario.getCargo()%></td>
<td><%=funcionario.getDataCadastroFormatado()%></td>
</tr>
Na tela consultafuncionario.jsp aparece a data correta do jeito que o usuario tem que ver, ex. 03/04/2012 sendo no banco está 2012-04-03.
Bem minha dificuldade é como passar de string para Date na hora que salvo no banco ou para visualizar na tela atualizacadastro.jsp, dá erro, e tentei de diversas formas para retornar para Date.
Estou usando o java.sql.Date
Na atualiza cadastro estou fazendo assim mas dá erro:
<td><input id="entrada" name="entarda" value="${funcionario.DataCadastroFormatado}"></input></td>
Alguem tem um exemplo usando beans, jsp, para acertos de date usando o mysql, ou podem me dar dicas onde devo tentar consertar isto?
Obrigado.
String dataTxt = "12/02/2013";
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
Date data = formato.parse(dataTxt);
ve se isso ajuda
Opa obrigado, mais não consegui, desisti e deixei no formatao yyyy-mm-dd na pagina atualizafuncionario.jsp, e na consultafuncionario.jsp usei
SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
return formato.format(getEntrada());
Até…
Galera, desisti naquele momento pois precisava desta parte funcionando.
Agora pelo menos funcionando voltei ao problema.
Acredito que seja na parte dos imports java.util.date e java.sql.date
veja este exemplo:
package teste;
import java.sql.Date;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class TesteConexãoDB {
public static void main(String[] args) throws SQLException {
Date agora= (Date) new java.util.Date();
Date agorasql = null;
System.out.println(agora);
SimpleDateFormat formata = new SimpleDateFormat("yyyy-MM-dd");
String formatadaagora = formata.format(agora);
System.out.println(formatadaagora); //aqui tenho a string 2013-04-05
// so que queria voltar esta string formatadaagora para date pelo java.sql.date para inserir no banco.
DateFormat formata2 = new SimpleDateFormat("yyyy-MM-dd");
try {
agorasql = (Date) formata2.parse(formatadaagora); //aqui eu tenho erro
} catch (ParseException e) {
e.printStackTrace();
}
ConexãoDB.obterConexao();
System.out.println(ConexãoDB.status);
Connection con = (Connection) ConexãoDB.obterConexao();
Statement st = con.createStatement();
String sqlup = "";
sqlup = "UPDATE `funcionario` SET `entrada` = '"+agorasql+"' WHERE `funcionario`.`codigo` =1";
st.executeUpdate(sqlup);
String sqlse = "";
sqlse = "Select nome,entrada From funcionario where codigo=1";
ResultSet rs = st.executeQuery(sqlse);
if (rs.next()){
String nome = rs.getString("nome");
System.out.println(nome);
Date entrada = rs.getDate("entrada");
System.out.println(entrada);
SimpleDateFormat dateFormat = new SimpleDateFormat( "dd/MM/yyyy");
String convertedDate=dateFormat.format(entrada);
System.out.println(convertedDate);
}
}
}
E tenho o erro de
Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
Ou seja como voltar as datas de forma que funcione para eu inserir num formato date.sql de volta ao banco?
Obrigado.
tenta assim
no lugar disso
agorasql = (Date) formata2.parse(formatadaagora);
fazer isso
agorasql = new Date(formata2.parse(formatadaagora).getTime());
exemplo:
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class MainTeste {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
String dataTXT = "25/01/1983";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date(format.parse(dataTXT).getTime());
System.out.println(date);
}
}
so pra explica melhor
quando vc faz
format.parse(dataTXT) // o retorno do método é um java.util.Date
se vc fizer um cast de um java.util.Date para um java.sql.Date vc tera um ClassCastException
por que java.sql.Date é filha de java.util.Date
Show de bola!
Resolveu.
Já ia até te perguntar o porque, mas vc já até respondeu.
Danilo valeu mesmo.
Obrigado.