Java.sql.sqlexception:将char数据类型转换为datetime数据类型导致datetime值超出范围

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

当我更新日期字段时,从NetBeans更新不起作用,并引发以下异常

Java.sql.sqlexception:将char数据类型转换为datetime数据类型导致datetime值超出范围

但是,我运行了相同的查询,该查询在SQL查询分析器(SQL Server 2000)中运行良好

我在NetBeans中格式化要更新的日期值,如下所示

        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的默认语言