Hi Oliver,
I presume that the variables "date1" and "date2" are instances of "java.lang.String". Oracle will try to convert a string literal (in an SQL statement) representing a date into the (database) DATE datatype -- based on the default date format.
Here is an excerpt from the
Oracle9i SQL Reference, Release 2 (9.2) (Part Number A96540-02):
The default date format is determined implicitly
by the NLS_TERRITORY initialization parameter,
or can be set explicitly by the NLS_DATE_FORMAT
parameter.
The URL for the relevant Web page is:
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/functions137a.htm#1003595 Assuming you haven't set the NLS_DATE_FORMAT parameter (since it is optional), but only the NLS_TERRITORY parameter (since it is mandatory), this Web page shows some of the default date formats for several values of NLS_TERRITORY:
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96529/ch3.htm#49984 Alternatively, Oracle's (thin) JDBC driver supports the JDBC "escape syntax". More details are available here:
http://java.sun.com/j2se/1.4.1/docs/guide/jdbc/getstart/statement.html#999472 Example:
Your third alternative is to use "PreparedStatement" -- as Jeanne has suggested -- however, I believe she is implying that you need to convert "date1" (and "date2") from a "String" to a "java.sql.Timestamp" -- using the "java.text.DateFormat" class.
Example:
See the javadoc for more details:
http://java.sun.com/j2se/1.4.1/docs/api/java/text/SimpleDateFormat.html (Using the "PreparedStatement" is left as an exercise ;-)
Hope this has helped you.
Good Luck,
Avi.