This week's giveaway is in the EJB and other Java EE Technologies forum. We're giving away four copies of EJB 3 in Action and have Debu Panda, Reza Rahman, Ryan Cuprak, and Michael Remijan on-line! See this thread for details.
You need to use bind variables in this statement. If you don't know how to do that, look up a JDBC tutorial to learn the way.
The problem is generally caused by the fact that the database expects the date to be in a format different from what java.sql.Date.toString() produces. Using bind variables is independent of the textual representation of these variables and therefore will solve your problem, making your code immune to SQL injection attacks and more performant as well.