一、Java 中 “java.util.Date” “java.sql.Date”的区别
首先可以看出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的父类
原文链接:https://blog.csdn.net/fouling/article/details/79745468
六、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
2)查询得到的结果
3)数据库
【注意】数据库中看到的是格式化后的(是不是这样还需要验证,可能是navicat的显示问题
第二种情况
1)Java类数据类型是Java.sql.Date
2)查询得到的结果
3)数据库类型是timestamp
第三种情况】
1)Java类数据类型是Java.util.Date
UTC: 协调世界时,又称世界统一时间、世界标准时间、国际协调时间
2)查询得到的结果
3)数据库类型是timestamp
【推荐] Java类(java.util.Date) 数据库(timestamp)