MySQL時(shí)間類型使用總結(jié)

1、MySQL中時(shí)間類型分類

下表列出了四種時(shí)間類型以及相關(guān)對(duì)比:

日期類型| 存儲(chǔ)空間 |日期格式 |日期范圍|零值
---|---|---|---
DATETIME| 8 bytes | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 |0000-00-00 00:00:00
TIMESTAMP| 4 bytes | YYYY-MM-DD HH:MM:SS| 1970-01-01 00:00:01 ~ 2038|00000000000000
TIME | 3 bytes| HH:MM:SS | -838:59:59~838:59:59|00:00:00
DATE | 3 bytes |YYYY-MM-DD|1000-01-01 ~ 9999-12-31 |0000-00-00
YEAR | 1 bytes |YYYY|1901 ~ 2155|0000

每種日期時(shí)間類型都有一個(gè)有效值范圍,如果超出這個(gè)范圍,在默認(rèn)的SQLMode下會(huì)報(bào)錯(cuò),并以零值(見(jiàn)上表)存儲(chǔ)。

  • DATETIME
    DATETIME 用于表示年-月-日 時(shí):分:秒,是 DATE 和 TIME 的組合,并且記錄的年份比較長(zhǎng)久。

  • TIMESTAMP

  • TIMESTAMP 用于表示年-月-日 時(shí):分:秒,但是記錄的年份比較短暫。

  • TIMESTAMP 和時(shí)區(qū)相關(guān),更能反映當(dāng)前時(shí)間。當(dāng)插入日期時(shí),會(huì)先轉(zhuǎn)換為本地時(shí)區(qū)后再存放;當(dāng)查詢?nèi)掌跁r(shí),會(huì)將日期轉(zhuǎn)換為本地時(shí)區(qū)后再顯示。所以不同時(shí)區(qū)的人看到的同一時(shí)間是不一樣的。

  • 表中的第一個(gè) TIMESTAMP 列自動(dòng)設(shè)置為系統(tǒng)時(shí)間(CURRENT_TIMESTAMP)。當(dāng)插入或更新一行,但沒(méi)有明確給 TIMESTAMP 列賦值,也會(huì)自動(dòng)設(shè)置為當(dāng)前系統(tǒng)時(shí)間。如果表中有第二個(gè) TIMESTAMP 列,則默認(rèn)值設(shè)置為0000-00-00 00:00:00。

  • TIMESTAMP 的屬性受 Mysql 版本和服務(wù)器 SQLMode 的影響較大。
    如果記錄的日期需要讓不同時(shí)區(qū)的人使用,最好使用 TIMESTAMP。

  • DATE
    DATE 用于表示年-月-日,如果實(shí)際應(yīng)用值需要保存年月日,就可以使用 DATE。

  • TIME

  • TIME 用于表示時(shí)分秒,如果實(shí)際應(yīng)用值需要保存時(shí)分秒 就可以使用 TIME。

  • 負(fù)值為了滿足兩個(gè)日期時(shí)間相減才

  • YEAR
    YEAR 用于表示 年份,YEAR 有 2 位(最好使用4位)和 4 位格式的年。 默認(rèn)是4位。如果實(shí)際應(yīng)用只保存年份,那么用 1 bytes 保存 YEAR 類型完全可以,不但能夠節(jié)約存儲(chǔ)空間,還能提高表的操作效率。

2、Java中與MySQL數(shù)據(jù)庫(kù)時(shí)間類型對(duì)應(yīng)的時(shí)間類型
MySQL java
Datetime java.sql.Timestamp
Timestamp java.sql.Timestamp
Date java.sql.Date
Time java.sql.Time
Year java.sql.Date
  • java.sql.Timestamp 、java.sql.Date、java.sql.Time 都是 java.util.Date的子類,適合跟數(shù)據(jù)庫(kù)交互。
  • java.util.Date類型的時(shí)間轉(zhuǎn)成java.sql.Date類型時(shí)間
Date time= new java.sql.Date(new java.util.Date().getTime());
  • java.util.Date類型的時(shí)間轉(zhuǎn)成java.sql.Timestamp類型時(shí)間
//獲得系統(tǒng)時(shí)間
Date date = new Date();
//將時(shí)間格式轉(zhuǎn)換成符合Timestamp要求的格式.
String now = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(date);
//轉(zhuǎn)換
 Timestamp timestamp =Timestamp.valueOf(now);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,537評(píng)論 6 13
  • mysql(5.5)所支持的日期時(shí)間類型有:DATETIME、 TIMESTAMP、DATE、TIME、YEAR。...
    snoweek閱讀 1,954評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,853評(píng)論 18 399
  • 七夕接龍主題:七月七日晴,忽然下起了大雪,不能睜開(kāi)眼,希望是我的幻覺(jué)。你站在這里,我站在那里,雪慢慢地下著,明明近...
    榮蔓蔓閱讀 638評(píng)論 0 4
  • 穿過(guò)一條又一條小巷 轉(zhuǎn)過(guò)一個(gè)又一個(gè)路口 撐扇彳亍于屋檐下 想探出手 贈(zèng)你一枝紅玫瑰 卻發(fā)現(xiàn) 麻木的手已任由玻璃劃破...
    _我執(zhí)_閱讀 265評(píng)論 0 0

友情鏈接更多精彩內(nèi)容