【问题标题】:JDBC - How to Retrieve only date without time (ORACLE 12c)JDBC - 如何只检索没有时间的日期 (ORACLE 12c)
【发布时间】:2016-02-11 23:57:44
【问题描述】:

我正在尝试构建一个小型控制台应用程序,用于接收公司员工的 ID 并打印他/她的详细信息。一切都很好,但是当涉及到员工的任命日期时,它会给出日期和时间。 示例:“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();
    }
}

输出如下:

输入员工ID:CCT003

员工姓名:约瑟夫·布朗

部门:人力资源

角色:执行招聘人员

任命时间:2006-02-13 00:00:00.0

工资:118000

请帮忙。 谢谢。

【问题讨论】:

标签: java jdbc oracle12c


【解决方案1】:

由于您将数据作为字符串检索,您可以再添加一个步骤并对其进行格式化

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+"'";

【讨论】:

  • 请看下面Володин Андрей的cmets。他为该列提供了一个别名,我省略了。他们是 JDBC 的好主意,我通过回答更新了。
【解决方案2】:

您可以修改 SQL 查询并使用 Oracle TO_CHAR() 函数:

    TO_CHAR(ES.DATE_OF_APPOINTMENT, 'YYYY-MM-DD') as DATE_OF_APPOINTMENT

【讨论】:

  • 谢谢Володин Андрей :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 1970-01-01
  • 2023-04-04
  • 2014-09-03
相关资源
最近更新 更多