【发布时间】:2013-07-11 04:28:45
【问题描述】:
当我更新我的日期字段时,更新不适用于 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 但问题不在于格式化数据两次;
-
我假设您在拒绝之前尝试了我的建议。您从设计用于定义日期值的控件中获取日期值。在这个阶段,它的类型是 Date。在您的解析/转换/格式化中,您首先将其转换为“Curr”格式的字符串。请注意,在您强加日期之前,日期没有格式。然后将该字符串解析回日期类型。这使得原始格式变得多余。然后将该日期格式化回字符串。如果问题不在于这种冗余格式,那么导致您的转换异常的原因是什么?
标签: java sql-server netbeans sqlexception