MySQL數(shù)據(jù)庫(kù)(十一)——數(shù)據(jù)類型(2)日期時(shí)間

MySQL中有多處表示日期的數(shù)據(jù)類型:YEAR汪茧、TIME舱污、DATE扩灯、DTAETIMETIMESTAMP惧磺。當(dāng)只記錄年信息的時(shí)候捻撑,可以只使用 YEAR 類型布讹。

每一個(gè)類型都有合法的取值范圍,當(dāng)指定確定不合法的值時(shí)白嘁,系統(tǒng)將“零”值插入數(shù)據(jù)庫(kù)中絮缅。

下表中列出了 MySQL 中的日期與時(shí)間類型耕魄。

MySQL 中的日期與時(shí)間類型

YEAR 類型

YEAR 類型是一個(gè)單字節(jié)類型彭谁,用于表示年缠局,在存儲(chǔ)時(shí)只需要 1 個(gè)字節(jié)狭园。可以使用各種格式指定 YEAR罚舱,如下所示:

以 4 位字符串或者 4 位數(shù)字格式表示的 YEAR管闷,范圍為 '1901'~'2155'燥滑。輸入格式為 'YYYY' 或者 YYYY,例如赃蛛,輸入 '2010' 或 2010,插入數(shù)據(jù)庫(kù)的值均為 2010呕臂。

以 2 位字符串格式表示的 YEAR歧蒋,范圍為 '00' 到 '99'谜洽。'00'~'69' 和 '70'~'99' 范圍的值分別被轉(zhuǎn)換為 2000~2069 和 1970~1999 范圍的 YEAR 值。'0' 與 '00' 的作用相同序臂。插入超過(guò)取值范圍的值將被轉(zhuǎn)換為 2000奥秆。

以 2 位數(shù)字表示的 YEAR构订,范圍為 1~99避矢。1~99 和 70~99 范圍的值分別被轉(zhuǎn)換為 2001~2069 和 1970~1999 范圍的 YEAR 值分尸。注意歹嘹,在這里 0 值將被轉(zhuǎn)換為 0000尺上,而不是 2000怎抛。

提示:兩位整數(shù)范圍與兩位字符串范圍稍有不同马绝。例如挣菲,插入 3000 年,讀者可能會(huì)使用數(shù)字格式的 0 表示 YEAR抚岗,實(shí)際上哪怔,插入數(shù)據(jù)庫(kù)的值為 0000认境,而不是所希望的 3000。只有使用字符串格式的 '0' 或 '00'篷扩,才可以被正確解釋為 3000鉴未,非法 YEAR值將被轉(zhuǎn)換為 0000鸠姨。

TIME 類型

TIME 類型用于只需要時(shí)間信息的值讶迁,在存儲(chǔ)時(shí)需要 3 個(gè)字節(jié)巍糯。格式為 HH:MM:SS祟峦。HH 表示小時(shí)宅楞,MM 表示分鐘厌衙,SS 表示秒婶希。

TIME 類型的取值范圍為 -838:59:59~838:59:59,小時(shí)部分如此大的原因是 TIME 類型不僅可以用于表示一天的時(shí)間(必須小于 24 小時(shí))狰晚,還可能是某個(gè)事件過(guò)去的時(shí)間或兩個(gè)事件之間的時(shí)間間隔(可大于 24 小時(shí)家肯,或者甚至為負(fù))讨衣。

可以使用各種格式指定 TIME 值式镐,如下所示反镇。

'D HH:MM:SS' 格式的字符串。還可以使用這些“非嚴(yán)格”的語(yǔ)法:'HH:MM:SS'娘汞、'HH:MM'歹茶、'D HH' 或 'SS'。這里的 D 表示日你弦,可以取 0~34 之間的值惊豺。在插入數(shù)據(jù)庫(kù)時(shí),D 被轉(zhuǎn)換為小時(shí)保存禽作,格式為 “D*24+HH”尸昧。

'HHMMSS' 格式、沒有間隔符的字符串或者 HHMMSS 格式的數(shù)值旷偿,假定是有意義的時(shí)間烹俗。例如幢妄,'101112' 被理解為'10:11:12'朽褪,但是 '106112' 是不合法的(它有一個(gè)沒有意義的分鐘部分)友题,在存儲(chǔ)時(shí)將變?yōu)?00:00:00。

提示:為 TIME 列分配簡(jiǎn)寫值時(shí)應(yīng)注意:如果沒有冒號(hào)后专,MySQL 解釋值時(shí)嫂用,假定最右邊的兩位表示秒往弓。(MySQL 解釋 TIME 值為過(guò)去的時(shí)間而不是當(dāng)前的時(shí)間)。例如,讀者可能認(rèn)為 '1112' 和 1112 表示 11:12:00(即 11 點(diǎn)過(guò) 12 分鐘)露氮,但MySQL 將它們解釋為 00:11:12(即 11 分 12 秒)叁扫。同樣 '12' 和 12 被解釋為00:00:12悠鞍。相反,TIME 值中如果使用冒號(hào)則肯定被看作當(dāng)天的時(shí)間辽旋,也就是說(shuō),'11:12' 表示 11:12:00,而不是 00:11:12每瞒。

DATE 類型

DATE 類型用于僅需要日期值時(shí)浓利,沒有時(shí)間部分,在存儲(chǔ)時(shí)需要 3 個(gè)字節(jié)。日期格式為 'YYYY-MM-DD',其中 YYYY 表示年,MM 表示月亩鬼,DD 表示日。

在給 DATE 類型的字段賦值時(shí)筑煮,可以使用字符串類型或者數(shù)字類型的數(shù)據(jù)插入秸应,只要符合 DATE 的日期格式即可祸挪。如下所示:

以 'YYYY-MM-DD' 或者 'YYYYMMDD' 字符中格式表示的日期,取值范圍為 '1000-01-01'~'9999-12-3'。例如,輸入 '2015-12-31' 或者 '20151231',插入數(shù)據(jù)庫(kù)的日期為2015-12-31。

以 'YY-MM-DD' 或者 'YYMMDD' 字符串格式表示日期佳晶,在這里YY表示兩位的年值。MySQL 解釋兩位年值的規(guī)則:'00~69' 范圍的年值轉(zhuǎn)換為 '2000~2069'灼伤,'70~99' 范圍的年值轉(zhuǎn)換為 '1970~1999'享郊。例如,輸入 '15-12-31'丝里,插入數(shù)據(jù)庫(kù)的日期為 2015-12-31;輸入 '991231',插入數(shù)據(jù)庫(kù)的日期為 1999-12-31坯墨。

以 YYMMDD 數(shù)字格式表示的日期蕾各,與前面相似脆贵,00~69 范圍的年值轉(zhuǎn)換為 2000~2069,80~99 范圍的年值轉(zhuǎn)換為 1980~1999躯枢。例如,輸入 151231晰洒,插入數(shù)據(jù)庫(kù)的日期為 2015-12-31豌拙,輸入 991231按傅,插入數(shù)據(jù)庫(kù)的日期為 1999-12-31枝誊。

使用 CURRENT_DATE 或者 NOW()压汪,插入當(dāng)前系統(tǒng)日期。

提示:MySQL 允許“不嚴(yán)格”語(yǔ)法:任何標(biāo)點(diǎn)符號(hào)都可以用作日期部分之間的間隔符赵哲。例如较坛,'98-11-31'、'98.11.31'扒最、'98/11/31'和'98@11@31' 是等價(jià)的丑勤,這些值也可以正確地插入數(shù)據(jù)庫(kù)。

DATETIME 類型

DATETIME 類型用于需要同時(shí)包含日期和時(shí)間信息的值吧趣,在存儲(chǔ)時(shí)需要 8 個(gè)字節(jié)法竞。日期格式為 'YYYY-MM-DD HH:MM:SS',其中 YYYY 表示年强挫,MM 表示月岔霸,DD 表示日,HH 表示小時(shí)俯渤,MM 表示分鐘呆细,SS 表示秒。

在給 DATETIME 類型的字段賦值時(shí)八匠,可以使用字符串類型或者數(shù)字類型的數(shù)據(jù)插入絮爷,只要符合 DATETIME 的日期格式即可趴酣,如下所示。

以 'YYYY-MM-DD HH:MM:SS' 或者 'YYYYMMDDHHMMSS' 字符串格式表示的日期略水,取值范圍為 '1000-01-01 00:00:00'~'9999-12-3 23:59:59'价卤。例如,輸入 '2014-12-31 05:05:05' 或者 '20141231050505’渊涝,插入數(shù)據(jù)庫(kù)的 DATETIME 值都為 2014-12-31 05:05:05慎璧。

以 'YY-MM-DD HH:MM:SS' 或者 'YYMMDDHHMMSS' 字符串格式表示的日期,在這里 YY 表示兩位的年值跨释。與前面相同胸私,'00~79' 范圍的年值轉(zhuǎn)換為 '2000~2079','80~99' 范圍的年值轉(zhuǎn)換為 '1980~1999'鳖谈。例如岁疼,輸入 '14-12-31 05:05:05',插入數(shù)據(jù)庫(kù)的 DATETIME 為 2014-12-31 05:05:05缆娃;輸入 141231050505捷绒,插入數(shù)據(jù)庫(kù)的 DATETIME 為 2014-12-31 05:05:05。

以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 數(shù)字格式表示的日期和時(shí)間贯要。例如暖侨,輸入 20141231050505,插入數(shù)據(jù)庫(kù)的 DATETIME 為 2014-12-31 05:05:05崇渗;輸入 140505050505字逗,插入數(shù)據(jù)庫(kù)的 DATETIME 為 2014-12-31 05:05:05。

提示:MySQL 允許“不嚴(yán)格”語(yǔ)法:任何標(biāo)點(diǎn)符號(hào)都可用作日期部分或時(shí)間部分之間的間隔符宅广。例如葫掉,'98-12-31 11:30:45'、'98.12.31 11+30+35'跟狱、'98/12/31 11*30*45' 和 '98@12@31 11^30^45' 是等價(jià)的俭厚,這些值都可以正確地插入數(shù)據(jù)庫(kù)。

TIMESTAMP 類型

TIMESTAMP 的顯示格式與 DATETIME 相同兽肤,顯示寬度固定在 19 個(gè)字符套腹,日期格式為 YYYY-MM-DD HH:MM:SS,在存儲(chǔ)時(shí)需要 4 個(gè)字節(jié)资铡。但是 TIMESTAMP 列的取值范圍小于 DATETIME 的取值范圍电禀,為 '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC。在插入數(shù)據(jù)時(shí)笤休,要保證在合法的取值范圍內(nèi)尖飞。

提示:協(xié)調(diào)世界時(shí)(英:Coordinated Universal Time,法:Temps Universel Coordonné)又稱為世界統(tǒng)一時(shí)間、世界標(biāo)準(zhǔn)時(shí)間政基、國(guó)際協(xié)調(diào)時(shí)間贞铣。英文(CUT)和法文(TUC)的縮寫不同,作為妥協(xié)沮明,簡(jiǎn)稱 UTC辕坝。

TIMESTAMP 與 DATETIME 除了存儲(chǔ)字節(jié)和支持的范圍不同外,還有一個(gè)最大的區(qū)別是:

DATETIME 在存儲(chǔ)日期數(shù)據(jù)時(shí)荐健,按實(shí)際輸入的格式存儲(chǔ)酱畅,即輸入什么就存儲(chǔ)什么,與時(shí)區(qū)無(wú)關(guān)江场;

而 TIMESTAMP 值的存儲(chǔ)是以 UTC(世界標(biāo)準(zhǔn)時(shí)間)格式保存的纺酸,存儲(chǔ)時(shí)對(duì)當(dāng)前時(shí)區(qū)進(jìn)行轉(zhuǎn)換,檢索時(shí)再轉(zhuǎn)換回當(dāng)前時(shí)區(qū)址否。即查詢時(shí)餐蔬,根據(jù)當(dāng)前時(shí)區(qū)的不同,顯示的時(shí)間值是不同的佑附。

提示:如果為一個(gè) DATETIME 或 TIMESTAMP 對(duì)象分配一個(gè) DATE 值樊诺,結(jié)果值的時(shí)間部分被設(shè)置為 '00:00:00',因此 DATE 值未包含時(shí)間信息音同。如果為一個(gè) DATE 對(duì)象分配一個(gè) DATETIME 或 TIMESTAMP 值啄骇,結(jié)果值的時(shí)間部分被刪除,因此DATE 值未包含時(shí)間信息瘟斜。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市痪寻,隨后出現(xiàn)的幾起案子螺句,更是在濱河造成了極大的恐慌,老刑警劉巖橡类,帶你破解...
    沈念sama閱讀 216,744評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇尚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡顾画,警方通過(guò)查閱死者的電腦和手機(jī)取劫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)研侣,“玉大人谱邪,你說(shuō)我怎么就攤上這事∈睿” “怎么了惦银?”我有些...
    開封第一講書人閱讀 163,105評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我扯俱,道長(zhǎng)书蚪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,242評(píng)論 1 292
  • 正文 為了忘掉前任迅栅,我火速辦了婚禮殊校,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘读存。我一直安慰自己为流,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評(píng)論 6 389
  • 文/花漫 我一把揭開白布宪萄。 她就那樣靜靜地躺著艺谆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拜英。 梳的紋絲不亂的頭發(fā)上静汤,一...
    開封第一講書人閱讀 51,215評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音居凶,去河邊找鬼虫给。 笑死,一個(gè)胖子當(dāng)著我的面吹牛侠碧,可吹牛的內(nèi)容都是我干的抹估。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼弄兜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼药蜻!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起替饿,我...
    開封第一講書人閱讀 38,939評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤语泽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后视卢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踱卵,經(jīng)...
    沈念sama閱讀 45,354評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評(píng)論 2 333
  • 正文 我和宋清朗相戀三年据过,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惋砂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,745評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绳锅,死狀恐怖西饵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榨呆,我是刑警寧澤罗标,帶...
    沈念sama閱讀 35,448評(píng)論 5 344
  • 正文 年R本政府宣布庸队,位于F島的核電站,受9級(jí)特大地震影響闯割,放射性物質(zhì)發(fā)生泄漏彻消。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評(píng)論 3 327
  • 文/蒙蒙 一宙拉、第九天 我趴在偏房一處隱蔽的房頂上張望宾尚。 院中可真熱鬧,春花似錦谢澈、人聲如沸煌贴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)牛郑。三九已至,卻和暖如春敬鬓,著一層夾襖步出監(jiān)牢的瞬間淹朋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工钉答, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留础芍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評(píng)論 2 369
  • 正文 我出身青樓数尿,卻偏偏與公主長(zhǎng)得像仑性,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子右蹦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容