JDBC - 如何只检索没有时间的日期 (ORACLE 12c)
JDBC - How to Retrieve only date without time (ORACLE 12c)
我正在尝试构建一个小型控制台应用程序,用于接收公司员工的 ID 并打印 his/her 详细信息。一切顺利,但是当涉及到员工的任命日期时,它会给出日期和时间。
示例:“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
请帮忙。
谢谢
由于您正在以字符串形式检索数据,因此您只需再添加一个步骤并对其进行格式化
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+"'";
您可以修改 SQL 查询并使用 Oracle TO_CHAR() 函数:
TO_CHAR(ES.DATE_OF_APPOINTMENT, 'YYYY-MM-DD') as DATE_OF_APPOINTMENT
我正在尝试构建一个小型控制台应用程序,用于接收公司员工的 ID 并打印 his/her 详细信息。一切顺利,但是当涉及到员工的任命日期时,它会给出日期和时间。 示例:“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
请帮忙。 谢谢
由于您正在以字符串形式检索数据,因此您只需再添加一个步骤并对其进行格式化
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+"'";
您可以修改 SQL 查询并使用 Oracle TO_CHAR() 函数:
TO_CHAR(ES.DATE_OF_APPOINTMENT, 'YYYY-MM-DD') as DATE_OF_APPOINTMENT