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 : 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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM