JDBC - Как получить только дату без времени (ORACLE 12c)

Я пытаюсь создать небольшое консольное приложение, которое получает идентификатор сотрудника в компании и печатает его данные. Все идет хорошо, но когда дело доходит до даты назначения сотрудника, он выдает дату вместе со временем. Пример: "2005-03-10 00:00:00.0"

Что я пытаюсь сделать здесь, я просто хочу "2005-03-10". Как это сделать? Вот код:

public static void main(String[] args) {

    Scanner read = new Scanner(System.in);
    try
    {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:sys/password@//localhost:1521:xe");
    Statement st = conn.createStatement();

    System.out.print("Enter the id of employee: ");
    String id = read.next();

    String sql = "SELECT E.EMP_NAME, D.DEPT_NAME, ES.ROLE, ES.DATE_OF_APPOINTMENT, S.SALARY "
            + "FROM EMPLOYEE E, DEPARTMENT D, DEPARTMENT_ROLE DR, EMPLOYEE_SERVICE ES, SALARY S "
            + "WHERE E.EMP_ID = ES.EMP_ID AND E.EMP_ID=S.EMP_ID AND D.DEPT_ID=DR.DEPT_ID AND DR.ROLE=ES.ROLE "
            + "AND E.EMP_ID='"+id+"'";

    ResultSet rs = st.executeQuery(sql);

    while(rs.next()){
        System.out.println("\n\nEmployee Name\t: "+rs.getString(1)+"\nDepartment\t: "+rs.getString(2)
                +"\nRole\t\t: "+rs.getString(3)+"\nAppointed On\t: "+rs.getString(4)+"\nSalary\t\t: "+rs.getString(5));
    }
    st.close();
    conn.close();
    read.close();
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    catch(Exception se){
        se.printStackTrace();
    }
}

Вывод выглядит следующим образом:

Введите идентификатор сотрудника: CCT003

Имя сотрудника: ДЖОЗЕФ БРАУН

Департамент : ЧЕЛОВЕЧЕСКИЕ РЕСУРСЫ

Роль: ИСПОЛНИТЕЛЬНЫЙ РЕКРУТЕР

Назначен : 2006-02-13 00:00:00.0

Зарплата : 118000

Пожалуйста помоги. Спасибо.


person Code Chest    schedule 11.02.2016    source источник
comment
вам нужен DateFormatter (stackoverflow.com/questions/5580965/java-date-formatter)   -  person senseiwu    schedule 11.02.2016
comment
Поскольку вы получаете его как строку, используйте TO_CHAR функция. Или получите его как дату и отформатируйте его   -  person BackSlash    schedule 11.02.2016


Ответы (2)


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

String sql = "SELECT E.EMP_NAME, D.DEPT_NAME, ES.ROLE, TO_CHAR(ES.DATE_OF_APPOINTMENT,'YYYY-MM-DD') AS DATE_OF_APPOINTMENT, S.SALARY "
            + "FROM EMPLOYEE E, DEPARTMENT D, DEPARTMENT_ROLE DR, EMPLOYEE_SERVICE ES, SALARY S "
            + "WHERE E.EMP_ID = ES.EMP_ID AND E.EMP_ID=S.EMP_ID AND D.DEPT_ID=DR.DEPT_ID AND DR.ROLE=ES.ROLE "
            + "AND E.EMP_ID='"+id+"'";
person EdgeCase    schedule 11.02.2016
comment
Пожалуйста, ознакомьтесь с комментариями Володина Андрея ниже. Он включил псевдоним для столбца, который я пропустил. Это хорошая идея с JDBC, и я обновил ответ. - person EdgeCase; 11.02.2016

Вы можете изменить запрос SQL и использовать функцию Oracle TO_CHAR():

    TO_CHAR(ES.DATE_OF_APPOINTMENT, 'YYYY-MM-DD') as DATE_OF_APPOINTMENT
person Володин Андрей    schedule 11.02.2016
comment
Спасибо, Володин Андрей :) - person Code Chest; 12.02.2016