zSynopsis zSynopsis - 2 months ago 15
Java Question

Java Date - Insert into database

I need to figure out a way to insert a record with a java.util.Date field into a database and i'm stuck.

Does anyone know how i can do this?
Right now i have something like.

java.util.Date myDate = new java.util.Date("01/01/2009");

sb.append("INSERT INTO USERS");
sb.append("(USER_ID, FIRST_NAME, LAST_NAME, SEX, DATE) ");
sb.append("VALUES ( ");
sb.append(" '" + userId + "'");
sb.append(", '" + myUser.GetFirstname() + "' ");
sb.append(", '" + myUser.GetLastname() + "' ");
sb.append(", '" + myUser.GetSex() + "' ");
sb.append(", '" + myDate + "'");
sb.append(")");

Util.executeUpdate(sb.toString());


But when i run something like this i get the error:
The syntax of the string representation of a datetime value is incorrect.

Heres what the sql statement looks like:

INSERT INTO USERS (USER_ID
, FIRST_NAME
, LAST_NAME
, SEX
, CRDATE)
VALUES (
'user'
, 'FirstTest'
, 'LastTest'
, 'M'
, 'Thu Jan 01 00:00:00 CST 2009')


Thanks

Answer

Granted, PreparedStatement will make your code better, but to answer your question you need to tell the DBMS the format of your string representation of the Date. In Oracle (you don't name your database vendor) a string date is converted to Date using the TO_DATE() function:

INSERT INTO TABLE_NAME(
  date_column
)values(
  TO_DATE('06/06/2006', 'mm/dd/yyyy')
)