一、Java 中 “java.util.Date” “java.sql.Date”的区别
image.png
首先可以看出java.util.Date是java.sql.Date的父类
java.sql.Date: 一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。
为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
参考:
java.sql.Date和java.util.Date区别及使用
二、关于时间精度的问题
java.util.Date 类代表某一特定的时间,精确到毫秒
System.currentTimeMillis() 返回long类型的时间戳,精确到毫秒
三、常用的时间处理函数以及说明
3.1 格式化时间
//精确到毫秒 output: 2020-03-21 21:07:41 468
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
System.out.println(sdf.format(new Date()));
System.out.println(sdf.format(System.currentTimeMillis()));
3.2 获取当前时间的时间戳
//System.currentTimeMillis()
System.out.println(System.currentTimeMillis());
//date.getTime()
java.util.Date date = new java.util.Date();
System.out.println(date.getTime());
四、不同格式日期之间的转换
五、MySQL中的数据类型
Mysql 与 java 的时间类型
MySql的时间类型有 Java中与之对应的时间类型
数据库时间类型
Java对应类
date
java.sql.Date
Datetime
java.sql.Timestamp
Timestamp
java.sql.Timestamp
Time
java.sql.Time
Year
java.sql.Date
转换相互转换:
Date date = new Date();//获得系统时间.
String nowTime = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”).format(date); //想转化为什么格式看你心情
Timestamp goodsC_date = Timestamp.valueOf(nowTime);//把时间转换
java.util.Date 是java.sql.Date的父类
六、Java与数据库数据的转换
java
数据库类型
数据库写入框架
问题
java.util.Date
timestamp
mybatis
java.util.Date
datetime
mybatis
java.sql.Timestamp
timestamp
mybatis
java.sql.Timestamp
datetime
mybatis
七、项目中的小实战(不断补充)
7.1 需要保留毫秒级的时间
第一种情况
1)Java类数据类型是Java.sql.Timestamp
image.png
2)查询得到的结果
image.png
3)数据库
image.png
【注意】数据库中看到的是格式化后的(是不是这样还需要验证,可能是navicat的显示问题
第二种情况
1)Java类数据类型是Java.sql.Date
image.png
2)查询得到的结果
image.png
3)数据库类型是timestamp
image.png
第三种情况】
1)Java类数据类型是Java.util.Date
image.png
UTC: 协调世界时,又称世界统一时间、世界标准时间、国际协调时间
2)查询得到的结果
image.png
3)数据库类型是timestamp
image.png
【推荐] Java类(java.util.Date) 数据库(timestamp)