Pessoal, minha duvida é a seguinte.
Tenho um campo do tipo java.sql.Date com a seguinte data por exemplo (2019-09-04 17:09:32)
Na hora que vou persistir essa data no banco fica (2019-09-04 00:00:00), a hora fica zerada.
O campo de data no meu banco está como timestamp.
Já alterei para o tipo datetime no banco mas não fez diferença.
public void Salvar (pedido dados) throws SQLException {
String SQL = "INSERT INTO PEDIDO (IDCLIENTE, ITENPEDIDO, DATAPEDIDO) VALUES (?,?,?)";
PreparedStatement insereSt = null;
Connection cnx = ConnectionFactory.getInstance().getConexao();
try{
cnx.setAutoCommit(false);
insereSt = cnx.preparedStatement(SQL);
TimesTamp t = new Timestamp(dados.getDataPedido().getTime());
insereSt.setInt(1, dados.getIDCliente);
insereSt.setString(2, dados.getItenPedido);
insereSt.setDate(3, t);
insereSt.executeUpdate();
cnx.commit();
} catch ... }
Você precisa utilizar java.sql.Timestamp e não o java.sql.Date
O Date vai considerar apenas a data (yyyy-mm-dd) e não as horas (HH:mm:ss:SSSSSS)
Agora persistiu, porém, eu mandei dar saída na hora pelo sysout e exibe a hora correta, mas no banco está ficando 3 hrs adiantado. O que pode estar acontecendo?
Uma coisinha chamada timezone…
Tudo bem, porem, quando do um select now() no banco me retorna a data e hora correta com a da minha maquina, e igual a saída do sysout
Resolvido.
Problema na url connection
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Thiago Sartori
*/
public class ConnectionFactory {
private Connection conn;
public void GeraConexao() {
this.conn = null;
try {
String URL = "jdbc:mysql://localhost:3306/sartoribot?useTimezone=true&serverTimezone=America/Sao_Paulo";
String user = "root";
String password = "root";
this.conn = DriverManager.getConnection(URL, user, password);
} catch (SQLException e) {
System.out.println("Ocorreu um erro na SQL de conexão: " + e.getMessage());
this.conn = null;
}
}
// ***** Padrão Singleton INICIO http://wmagician.wordpress.com/2008/01/02/padrao-singleton-em-java/
private static ConnectionFactory ConnFactory;
public static ConnectionFactory getInstance() {
try {
if (ConnFactory == null) {
ConnFactory = new ConnectionFactory();
}
if (ConnFactory.getConexao() == null) {
ConnFactory.GeraConexao();
}
if (ConnFactory.conn.isClosed()) {
ConnFactory.GeraConexao();
}
} catch (SQLException e) {
Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, e);
}
return ConnFactory;
}
// ***** Padrão Singleton FIM
public Connection getConexao() {
return conn;
}
}