java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分。
java.util.Date 就是在除了SQL语句的情况下面使用。
它都有getTime方法返回毫秒数,返回的是自1970年01月01日凌晨0点0分0秒至现在所经过的毫秒数。
package ljy.oraclejdbc.test; import java.text.SimpleDateFormat; public class test { /** * @param args */ public static void main(String[] args) { try { System.out.println(getTimestamp()); } catch (Exception e) { e.printStackTrace(); } } public static String getTimestamp() throws Exception { java.text.SimpleDateFormat formater = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); java.util.Date date= formater.parse("1970-01-01 00:00:00"); return Long.toString(date.getTime()); } //系统时间是与本初子午线上的时间是一致的,而本地时间是随着地域的推移略有不同 //例如:当本初子午线上的系统时间是1970年1月1号凌晨0时0分0秒的时候,它的本地时 //间也是这个,但是中国处在东八区,此时他的本地时间比标准的时间要慢8个小时,也 //就是说当标准时间为1970年1月1号凌晨0时0分0秒的时候,中国的实际时间为 //1969年12月31号16时0分0秒的时候,所以你在中国的话,这个函数获取的实际上是 //1969年12月31号16时0分0秒距离标准时间1970年1月1号凌晨0时0分0秒所经过的毫秒数 //因为是在标准的时间之前所以是负数:-28800000 如果将函数的时间改为 //formater.parse("1970-01-01 08:00:00")那么放回的就是正数:0 }
java.sql.date 与java.util.date 使用的场景和互相的转换。
package ljy.oraclejdbc.domain; import java.util.Date; //平常数据存储都是使用java.util.Date //只有在用SQL语句存入数据库的时候使用java.sql.Date public class Student { private Date stuBirth; public Date getStuBirth() { return stuBirth; } public void setStuBirth(Date date) { this.stuBirth = date; } }
private static final String SQL_ADD ="insert into tbl_student values(?)"; DBUtils utils = new DBUtils(); Connection conn = utils.getConn(); //创建好连接数据库所需要的链接 PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(SQL_ADD); pstmt.setDate(1, new java.sql.Date(stu.getStuBirth().getTime())); //进行数据库SQL操作的时候要将原本存储格式为java.util.Date的时间 //转换为java.sql.Date格式的时间才可以进行数据库的操作 pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }
原创出处:http://blog.csdn.net/u012830807