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常用格式。