gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:35:45 26 4
gpt4 key购买 nike

从 MySQL DB 检索 JTable 中数据的 MySQL 查询在 Java 代码中失败,但在 SQL Workbench 中工作正常

以下查询:

从 emp payment 中选择 date_format(emp_date,'%d-%b-%Y') as emp_date,emp_name,emp_accno,emp_amt,pay_mode,e_comp,e_remark";

在检索时,我需要“dd-mmm-yyyy”(2020 年 4 月 4 日)格式,因此我使用上述 date_format 根据要求进行转换。在 JTable 中执行时出现以下错误。

错误:java.sql.SQLException:第 1 列中的日期“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 中进行此类格式化。

本地日期

使用符合 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 ) ;

关于java - 检索数据时 SQL 日期格式() 在 JTable 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61044499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com