2016-02-02 4 views
-1

Я использую подключение JDBC & Java Swing UI и там я использовал SqLite DB.
Здесь у меня есть компонент java, который является jCalender для даты получения & Я выбираю дату в String.Как изменить формат даты в java


Во-первых, преобразовать строку в дату java.util тогда я конвертировать java.util.Date в java.sql.Date но мой формат даты строка «дд/ММ/ГГГГ» &

Тогда
DateFormat format = new SimpleDateFormat ("dd/MM/YYYY", Locale.ENGLISH);

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

Здесь я приложил копию кода plz guyz help me, это очень важно.



String from_date = ((JTextField) txt_bilty_date_start.getDateEditor().getUiComponent()).getText(); 
    String to_date = ((JTextField) txt_bilty_date_end.getDateEditor().getUiComponent()).getText(); 

    DateFormat format = new SimpleDateFormat("dd/MM/YYYY", Locale.ENGLISH); 
    Date date1 = format.parse(from_date); 
    Date date2= format.parse(to_date); 

    java.sql.Date sqlDate1 = new java.sql.Date(date1.getTime()); 
    java.sql.Date sqlDate2 = new java.sql.Date(date2.getTime()); 

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/YYYY"); 

    System.out.println("\t\tafter change date"); 
    System.out.println(sdf.format(sqlDate1)); 
    System.out.println(sdf.format(sqlDate2)); 

    String sql = "select * from employee where record_date BETWEEN '"+sdf.format(sqlDate1)+"' AND '"+sdf.format(sqlDate2)+"' "; 

    pst=conn.prepareStatement(sql2); 
    rs = pst.executeQuery(); 
    tbl_employee.setModel(DbUtils.resultSetToTableModel(rs)); 
+0

'' но все еще проблема, когда я ищу запись между датой. "' - вы захотите подробно остановиться на этом. –

+0

В случае, если мой комментарий выше не был полностью ясным, это означает, что вы захотите более подробно рассказать о проблемах, которые могут возникнуть, включая публикацию любых сообщений об ошибках или исключениях и/или описание в порядочных детализируйте любые и все неправильные вещи, с которыми вы можете столкнуться. –

+0

По существу, вам все равно, 'java.util/sql.Date' - это всего лишь контейнерный класс для количества миллисекунд с момента unix, у него нет« формата ». Просто используйте 'PreparedStatement' и привяжите объект' Date' к запросу напрямую и позвольте водителю позаботиться об этом – MadProgrammer

ответ

2

Если предположить, что record_date является дата SQL в базе данных (а не какой-то VARCHAR), попробовать, как это с надлежащей PreparedStatement.

String sql = "select * from employee where record_date BETWEEN ? AND ?"; 
pst=conn.prepareStatement(sql2); 
pst.setDate(1, sqlDate1); 
pst.setDate(2, sqlDate2); 
rs = pst.executeQuery(); 

Обратите внимание, что все попытки/улов/проверить закрыто в конце концов стали намного проще с try-with-resource введенного в Java 7.

Если дата является VARCHAR вам нужно реверса порядок ваших полей, чтобы иметь наиболее значительное поле вверх - yyyy MM dd в некотором роде. Только тогда результаты String/VARCHAR будут работать так же, как и в строковых представлениях строк.