2012-04-12 95 views
4

我想在preparedStatement中使用to_date在oracle数据库中输入日期,但我收到错误。在preparedStatement中使用oracle的to_date

代码片断:

sql = "select Identifier from metadata where content_cdate >=to_date(?,'dd-mm-yyyy') and content_cdate < to_date(?,'dd-mm-yyyy') and status='published' and content_mdate is null"; 

ps.setString(1, commonUtil.dateToString(startTime)); 

的dateToString方法返回一个像这样的值:2012-01-01 12:00:00

错误:

[Oracle][ODBC][Ora]ORA-01861: literal does not match format string 

请指点。

回答

7

您应该使用正确的TO_DATE格式掩码来匹配您的输入。

你的情况很可能是:TO_DATE(?,'YYYY-MM-DD HH24:MI:SS')

在dB
+0

存储在DD-MM-yyyy格式的日期。此更改是否会导致其他错误? – 2012-04-12 08:37:37

+0

你的意思是以'dd-mm-yyyy'格式存储的?作为'VARCHAR2'?如果它是日期类型之一,那么它将被存储在内部表示中,并根据您的“NLS_DATE_FORMAT”显示给您。 – Anonymous 2012-04-12 08:39:18

+0

现在我得到这样一个错误'[Oracle] [ODBC] [Ora] ORA-01810:格式代码出现两次' – 2012-04-12 08:39:36