How do I insert date, without time, to MySQL database table? I tried these codes but I get the following exception:
com.mysql.jdbc.exceptions.jdbc4.MySQLSynt
First of all, to persist a java.util.Date into a database in Java, you will have to convert it to java.sql.Date. The fortunate thing about JDBC SQL Date is that it's a subclass of Java Date.
Therefore, to create a java.sql.Date from java.util.Date, you will have to do this:
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = formatter.parse(date);
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());
db.insert_date(sqlDate);
Make sure that db.insert_date accepts only java.sql.Date.
Where you will have to call your PreparedStatement.setDate() function.
See the related question java.util.Date vs java.sql.Date.
NEVER use java.sql.Statement for insert data. Use ALWAYS java.sql.PrepartedStatement. This because is a better way to avoid SQL Injection (see this for an explain). So, in your case, you can insert the date in this way:
statement = connect.prepareStatement("INSERT INTO test.Date(date, Sen_id, doc_id) VALUES(?, ?, ?)");
statement.setDate(1, new java.sql.Date(date_str.getTime());
statement.setInt(2, sentence_id);
statement.setInt(3, document_id);