Java日期时间API系列2-----Jdk7及以前的日期时间类在mysql数据库中的应用

Posted xkzhangsanx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java日期时间API系列2-----Jdk7及以前的日期时间类在mysql数据库中的应用相关的知识,希望对你有一定的参考价值。

1.java中与数据库相关的时间类

java提供与mysql方便交互的三种数据类型:

java.sql.Date

java.sql.Time

java.sql.Timestamp

它们都是继承java.util.Date,算是对该类的精简,很适合跟数据库交互。

2.MySQL 中的日期和时间类型

日期和时间类型 字节 最小值 最大值
DATE 4 1000-01-01 9999-12-31
DATETIME 8 1000-01-01 00:00:00 9999-12-31 23:59:59
TIMESTAMP 4 19700101080001 2038 年的某个时刻
TIME 3 -838:59:59 838:59:59
YEAR 1 1901 2155

 

3.java中类与mysql中类型的匹配

java类型   mysql类型

timestamp datetime

timestamp timestamp

timestamp date 保留日期部分

timestamp time 保留时间部分

date         date

time         time

4.mysql中datetime与timestamp的区别

a)DATETIME的默认值为null,5.6版本之后,也能用CURRENT_TIMESTAMP;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。

b)DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。

c)两者的存储方式不一样 ,对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。

d)两者所能存储的时间范围不一样:

timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;

datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。

所以,如果要适用广泛的,建议适用DATETIME。


参考:https://www.jianshu.com/p/937656cb269b

      https://blog.csdn.net/z3278221/article/details/81000876

 

 

 

以上是关于Java日期时间API系列2-----Jdk7及以前的日期时间类在mysql数据库中的应用的主要内容,如果未能解决你的问题,请参考以下文章

Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析

Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的特点

Java日期时间API系列20-----Jdk8中java.time包中的新的日期时间API类,ZoneId时区ID大全等。

Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter

Java日期时间API系列17-----Jdk8中java.time包中的新的日期时间API类,java日期计算4,2个日期对比,获取相差年月日部分属性和相差总的天时分秒毫秒纳秒等

Java日期时间API系列33-----Jdk8中java.time包中的新的日期时间API类应用,格式化常用模板大全,新增Excel常用格式。