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
:
59
timestamp 4bytes xxxx-xx-xx xx:xx:xx
1970
-
01
-
01
00
:
00
:
01
到
2038
date 3bytes xxxx-xx-xx
1000
-
01
-
01
到
9999
-
12
-
31
year 1bytes xxxx
1901
到
2155
time 3bytes xx:xx:xx -
838
:
59
:
59
到
838
:
59
:
59
(為了滿足時間的加減運算)
------------------------------------------------------------------------
java(
1.6
) 中能保存時間日期類型的類主要有
java.util.Date
java.util.Calendar
java.sql.Date
java.sql.Time
java.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 yes
date time no
date timestamp no
date datetime no
time date no
time time yes
time timestamp no
time datetime no
timestamp date yes
timestamp time yes
timestamp timestamp yes
timestamp 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 yes
date time yes --------------缺少的部分使用歷元
date timestamp yes --------------缺少的部分使用歷元
time date yes --------------缺少的部分使用歷元
time time yes
time timestamp yes --------------缺少的部分使用歷元
timestamp date yes
timestamp time yes
timestamp timestamp yes
datetime date yes
datetime time yes
datetime 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,本身字段依然是
null
db(not
null
) to java==========> 如果包含日期,則報錯,否則為
000
最優解決方案,定義成可以為
null
|