所以我有一个函数,它将java.sql.Date fromDate
作为输入参数。其格式为yyyy-MM-dd
(2014-05-01)。现在我想将其转换为格式dd-MMM-yyyy
(2014年5月1日)以插入到oracle db中。我必须使用setDate
对象中的PreparedStatement
函数。任何帮助表示赞赏。有没有办法将sql Date转换为不同的格式而不将其转换为String?
public class Sample{
private static final String CHECK_HOLIDAY = " select count(*) as noofdays from TLTA.SITE_HOLIDAY where (HOLIDAY_DATE between ? and ? )";
public int getSiteHolidays(Leave leave) {
int holidays = 0;
try {
Connection con = ConnectionProvider.getCon();
PreparedStatement ps = con.prepareStatement(CHECK_HOLIDAY);
ps.setString(1,leave.getFromDate());
ps.setString(2,leave.getToDate());
/*
*other code
*/
}
catch(Exception e){
}
}
}
从Date
获得的leave.getFromDate()
是2014-05-01。当这绑定到PreparedStatement
时,我在执行
ORA-01861:文字与格式字符串不匹配 01861. 00000 - “文字与格式字符串不匹配” *原因:输入中的文字必须与文字中的文字长度相同 格式字符串(前导空格除外)。如果 “FX”修饰符已经打开,文字必须完全匹配, 没有额外的空白。 *操作:更正格式字符串以匹配文字。
数据库中存储的日期格式为2014年5月1日。此外,当我尝试通过在2014年5月1日格式中给出日期来执行查询时,它会执行。此外,我尝试了StackOverflow上建议的其他修复程序。不适合我。我该如何解决这个问题?