SQL формат даты () не работает в JTable при получении данных - PullRequest
0 голосов
/ 05 апреля 2020

MySQL запрос на получение данных в JTable из MySQL Сбой базы данных в Java коде, но нормально работает в SQL Workbench

Следующий запрос:

ВЫБРАТЬ date_format (emp_date, '% d-% b-% Y') в качестве emp_date, emp_name, emp_accno, emp_amt, pay_mode, e_comp, e_remark ОТ платежа ";

При получении мне нужно" dd- mmm-yyyy "(04-Apr-2020) формат, поэтому я использую приведенный выше date_format для преобразования в соответствии с требованиями. При выполнении в JTable я получаю следующую ошибку.

Ошибка: java. sql .SQLException: Неверный формат для ДАТЫ '20-Mar-2020 'в столбце 1.

           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);
 }

Пожалуйста, укажите мне

1 Ответ

0 голосов
/ 05 апреля 2020

Несоответствие типов данных

Что касается вашей ошибки, мне интересно, если тип столбца в модели данных, поддерживающей ваш JTable, указывает тип данных даты и времени, пока ваш код предоставляет объект String. Итак, несоответствие типов данных.

Используйте Java, а не SQL

Я бы сделал такое форматирование в вашем приложении Java, а не в SQL.

LocalDate

Получите значение из столбца DATE как LocalDate, используя драйвер JDB C, совместимый с JDB C 4.2 или более поздней. Такие драйверы могут напрямую обмениваться объектами 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 ) ;

Жесткое кодирование формата

Если вы настаиваете на жестком кодировании указанного формата c, укажите свой шаблон форматирования.

DateTimeFormatter.ofPattern( "dd-MMM-uuuu" , Locale.UK ) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...