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);