1.类型说明
Mysql中:
date 仅存储日期,表示范围'1000-01-01'到'9999-12-31'。
datetime 存储日期和时间,表示范围‘1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’,查询的内容不做任何改变,原样输入和输出。
timestamp 存储日期和时间,表示范围‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’,把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储,查询时,将其又转化为客户端当前时区进行返回。
Java中:
java.util.Date 获取当前系统时间,或者指定一个时间。——指定某个时间时,构造函数参数为时间戳。
java.sql.Data 操作数据库时,针对sql语句使用,包含日期、不包含时间。——构造函数参数为时间戳。
java.sql.Timestamp 操作数据库时,针对sql语句使用,既包含日期和时间。——构造函数参数为时间戳。
2.Java.util.Date类的使用
java.util.Date date1 = new java.util.Date();//获取当前系统日期和时间,显示内容如:Wed Dec 09 08:32:34 CST 2020
long tem = date1.getTime(); //返回自从GMT 1970-01-01 00:00:00到此date对象上时间的毫秒数,即毫秒时间戳。
java.util.Date date2 = new java.util.Date(date1.getTime()); //指定日期时间,构造函数的参数为毫秒时间戳。
3.java.sql.Data类、java.sql.Timestamp类的使用
这两个类是在对数据库操作时,用于填充sql语句。
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
(1)存入:setXXX
con = Database.conn(); //连接数据库
String sql="insert into table1 values(?, ?, ?, ?)"; //如数据库字段为:id(int), dt1(date), dt2(datetime), dt3(timestamp)
ps = con.prepareStatement(sql);
ps.setInt(1,1); //sql语句中第1个字段位置
java.sql.Date jsd = new java.sql.Date(date1.getTime()); //将date1的毫秒时间戳转化为java.sql.Date对象后,set进数据库中date类型的字段
ps.setDate(2, jsd); //sql语句中第2个字段位置
java.sql.Timestamp timestamp = new java.sql.Timestamp(date1.getTime()); //将date1的毫秒时间戳转化为java.sql.Timestamp对象后,set进数据库中datetime类型和timestamp类型的字段
ps.setTimestamp(3, timestamp); //sql语句中第3个字段位置
ps.setTimestamp(4, timestamp); //sql语句中第4个字段位置
(2)取出:getXXX
con = Database.conn();
String sql="select * from table1";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()){
System.out.println("1.id: " + rs.getInt("id"));
System.out.println("2.dt1:" + rs.getDate("dt1"));
System.out.println("3.dt2:" + rs.getTimestamp("dt2"));
System.out.println("4.dt3:" + rs.getTimestamp("dt3"));
}
参考:
1. https://blog.csdn.net/qq_35152037/article/details/90171595
2. https://www.it610.com/article/1281791928144248832.htm
3. https://www.cnblogs.com/huangcan1688/p/12302608.html