Java.sql.sqlexception:将char数据类型转换为datetime数据类型导致datetime值超出范围
当我更新日期字段时,从NetBeans更新不起作用,并引发以下异常 Java.sql.sqlexception:将char数据类型转换为datetime数据类型导致datetime值超出范围 但是,我运行了相同的查询,该查询在SQL查询分析器(SQL Server 2000)中运行良好 我在NetBeans中格式化要更新的日期值,如下所示Java.sql.sqlexception:将char数据类型转换为datetime数据类型导致datetime值超出范围,java,sql-server,netbeans,sqlexception,Java,Sql Server,Netbeans,Sqlexception,当我更新日期字段时,从NetBeans更新不起作用,并引发以下异常 Java.sql.sqlexception:将char数据类型转换为datetime数据类型导致datetime值超出范围 但是,我运行了相同的查询,该查询在SQL查询分析器(SQL Server 2000)中运行良好 我在NetBeans中格式化要更新的日期值,如下所示 JXDatePicker jDatePicker = (JXDatePicker) comp; Date date = jDa
JXDatePicker jDatePicker = (JXDatePicker) comp;
Date date = jDatePicker.getDate();
if (date != null) {
try {
String expectedPattern = "yyyy-MM-dd HH:mm:ss.SSS";
String currentFormat = "dd-MM-yyyy HH:mm:ss.SSS";
SimpleDateFormat dateFormatReq = new SimpleDateFormat(expectedPattern);
SimpleDateFormat dateFormatCurr = new SimpleDateFormat(currentFormat);
// To Convert Date To Required Format For DB
//First Prepare A String In Current Format dd-MM-yyyy
// Then Convert To The Date In The Current Format dd-MM-yyyy
// Then Convert Into String In The Desired Format yyyy-MM-dd
String strDate = dateFormatReq.format(dateFormatCurr.parse(dateFormatCurr.format(date)));
} catch (ParseException ex) {
Logger.getLogger(ChangeJControlProperties.class.getName()).log(Level.SEVERE, null, ex);
}
}
String query =update myTable
set date=strDate where id=myDd
对于日期2013-07-05,它已成功更新。
对于日期2013-06-28,它显示上述异常问题已经解决,因为选择的默认语言是泰语,当我将其更改为英语时,异常不会出现,问题消失。您真的需要格式化日期两次吗?我无法动摇存在冗余/不必要解析的想法。如果只使用所需格式格式化选择器中的日期,会发生什么情况?@Zec但问题不在于格式化数据两次;我想你在拒绝我的建议之前试过了。从设计用于定义日期值的控件中获取日期值。在这个阶段,它属于日期类型。在解析/转换/格式化过程中,首先将其转换为“Curr”格式的字符串。请注意,在您强制使用日期之前,日期没有格式。然后将该字符串解析回日期类型。这使得原始格式变得多余。然后将该日期重新格式化为字符串。如果问题不在于这种冗余格式,那么是什么导致了转换异常?如果我可以问,什么的默认语言?Windows的默认语言