Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to insert Date into MySQL Database table in Java?

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.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Mar 05 00:00:00 GMT-08:00 2014,1,1)' at line 1

NOTE: In MySQL table, data type of this column I chose date datatype

String Date = "\\d\\d\\d\\d\\D[0-1][0-9]\\D[0-3][0-9]";
while (DateMatcher.find())  {   
    String date = DateMatcher.group().trim();

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date myDate = formatter.parse(date);

    db.insert_date(myDate,2,1);           
}

I've problem only with date part Query for inserting Date :

// insert DATE
public void insert_date(Date  date_str, int sentence_id ,int document_id ){
       // Statements allow to issue SQL queries to the database

    try {
        statement = connect.createStatement();

        System.out.println(  "insert into Date(date_Str,Sen_id,doc_id) " +
                 " values(" + date_str + "," +  sentence_id + "," + document_id +  ")"
                 );


        statement.executeUpdate(

         "insert into test.Date(date,Sen_id,doc_id)" +
         " values(" + date_str + "," +  sentence_id + "," + document_id + ")"
          );
    }
    catch(Exception e ){System.out.println(e);};
    // Result set get the result of the SQL query

}
like image 957
Freeman Avatar asked Dec 07 '25 10:12

Freeman


1 Answers

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.

like image 144
Buhake Sindi Avatar answered Dec 09 '25 23:12

Buhake Sindi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!