Java中日期类型和mysql中日期类型进行整合
1. java与mysql中日期、时间类型总结:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
mysql(版本:5.1.50)的时间日期类型如下:datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59:59timestamp 4bytes xxxx-xx-xx xx:xx:xx 1970-01-01 00:00:01到2038date 3bytes xxxx-xx-xx 1000-01-01到9999-12-31year 1bytes xxxx 1901到2155time 3bytes xx:xx:xx -838:59:59到838:59:59(为了满足时间的加减运算)------------------------------------------------------------------------java(1.6) 中能保存时间日期类型的类主要有java.util.Datejava.util.Calendarjava.sql.Datejava.sql.Timejava.sql.Timestamp |
2. java提供与mysql方便交互的三种数据类型
java.sql.Date
java.sql.Time
java.sql.Timestamp
它们都是继承java.util.Date,算是对该类的精简,很适合跟数据库交互。
对于java.util.Date,以前从mysql中查询出来的时间日期类型,都放在java.util.Date类型里面了。这样带来一系列的问题,首先这个类提供的时间操作函数太少,一般都需要转换成java.util.Calendar再去操作。
对于java.util.Calendar,calendar具有强大的跳跃运算和间隔运算能力,在需要的时候,可以将sql系列的时间转成calendar。
先设置calendar为历元,然后从sql系列时间中转换,最后再转回sql系列时间。
3. 实验:java >> mysql
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
===========java注入数据库==========java类型 mysql类型 成功与否date date yesdate time nodate timestamp nodate datetime notime date notime time yestime timestamp notime datetime notimestamp date yestimestamp time yestimestamp timestamp yestimestamp datetime yes==========end java注入数据库========总规律,如果A完全包含B,则A可以向B注入数据,否则报错 |
4.实验:mysql >> java
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
==========从数据库提取到java ==========mysql类型 java类型 成与否date date yesdate time yes --------------缺少的部分使用历元date timestamp yes --------------缺少的部分使用历元 time date yes --------------缺少的部分使用历元time time yestime timestamp yes --------------缺少的部分使用历元timestamp date yestimestamp time yestimestamp timestamp yesdatetime date yesdatetime time yesdatetime timestamp yes==========end 从数据库提取到java=======不会出错,缺少的部分使用历元,而不是当前日期时间 |
5. 当数据库中的日期值是null时,读取出来进行java对象实例化时:
|
1
2
3
4
5
|
null to db(null) =====> 也是null null to db(not null)=======> 数据库报错db(null) to java==========> 如果单字段出来,则整个entity都是null,如果带着其他不是null的字段出来,则可以实例化entity,本身字段依然是nulldb(not null) to java==========> 如果包含日期,则报错,否则为000最优解决方案,定义成可以为null |

浙公网安备 33010602011771号