检索数据时,SQL日期格式()在JTable中不起作用



从MySQL数据库中检索JTable中数据的MySQL查询在Java代码中失败,但在SQL Workbench中运行良好

以下查询:

将日期格式(emp_date,'%d-%b-%Y'(选择为emp_date、emp_name、emp_accno、emp_amt、pay_mode、e_comp、e_remark FROM emppayment";

在检索时,我需要"dd-mmm-yyyy"(2020年4月4日(格式,所以我使用上面的date_format根据要求进行转换。在JTable中执行时,我得到以下错误。

错误:java.sql.SQLException:第1列中DATE"20-Mar-2020"的格式错误。

String dquery = "SELECT date_format(emp_date,'%d-%b-%Y') as emp_date, emp_name,emp_accno,emp_ifsc,sal_month,emp_amt,pay_mode,e_comp,e_remark FROM emppayment;   
pst = con.prepareStatement(dquery);
rs = pst.executeQuery();       
DefaultTableModel tm = (DefaultTableModel) jTable1.getModel();
tm.setRowCount(0);
while (rs.next()) {
Object obj[]= {
rs.getString("emp_date"),
rs.getString("emp_name"),
rs.getString("emp_accno"),
rs.getString("emp_ifsc"),
rs.getString("sal_month"),
rs.getString("emp_amt"),
rs.getString(pay_mode),
rs.getString(e_comp),
rs.getString(e_remark)};
tm2.addRow(obj);
}

请引导我

数据类型不匹配

至于您的错误,我想知道在您的代码提供String对象时,支持JTable的数据模型中的列类型是否指定了日期-时间数据类型。因此,数据类型不匹配。

使用Java,而不是SQL

我会在你的Java应用程序中而不是在你的SQL中进行这样的格式化。

LocalDate

使用符合JDBC 4.2或更高版本的JDBC驱动程序,将DATE列中的值作为LocalDate检索。这样的驱动程序能够直接与数据库交换java.time对象。

LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;

使用DateTimeFormatter进行本地化

自动本地化以向用户演示。

Locale locale = Locale.CANADA_FRENCH ;  // Or Locale.US and so on.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( locale ) ;
String output = ld.format( f ) ;

硬编码格式

如果您坚持要硬编码特定的格式,请指定您的格式模式。

DateTimeFormatter.ofPattern( "dd-MMM-uuuu" , Locale.UK ) ;

最新更新