先看这一段代码
public static void main(String[] args) {
//查询入职时间在XXX日期之后,并且不从事XXX职位工作的员工姓名、入职时间、职位。
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mysqldb";
String username = "root";
String password = "root";
Connection con=DriverManager.getConnection(url,username,password);
Scanner sc =new Scanner(System.in);
System.out.println("请输入时限");
String limitdate = sc.nextLine();
System.out.println("请输入不从事的工作");
String nojob = sc.nextLine();
String sql ="select ename,hiredate,job from emp where hiredate>? and job != ?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, limitdate);
ps.setString(2, nojob);
ResultSet rs =ps.executeQuery();
while(rs.next()) {
String ename = rs.getString("ename");
String hiredate = rs.getString("hiredate");
String job = rs.getString("job");
System.out.println("员工姓名:"+ename+",入职日期:"+hiredate+",职位:"+job);
}
rs.close();
ps.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
摘取讨论片段:
String sql="select ename,hiredate,job from emp where hiredate>? and job<>?";
PreparedStatement ps=con.prepareStatement(sql);
Date dd=Date.valueOf(hiredate);
// ps.setString(1, hiredate);
ps.setDate(1, dd);
ps.setString(2, job);
1.MySQL可以把表示日期的字符串转换成真正的日期
2.如果是Oracle,没法自动把String转换成Date
3.ps.setDate方法接收日期参数是java.sql.Date,不是java.util.Date
4.使用java.sql.Date的静态方法valueOf把表示日期的字符转换为真正日期

Oracle对于Date的用法