摘要:中常用的兩種時間儲存類型分別是和。下面就談?wù)勊麄兊膮^(qū)別和怎么選擇。時區(qū)只占個字節(jié),而且是以的格式儲存,它會自動檢索當(dāng)前時區(qū)并進(jìn)行轉(zhuǎn)換。如果只是想表示年日期時間的還可以使用,它們分別占據(jù)字節(jié),而就是它們的集合。
MySQL 中常用的兩種時間儲存類型分別是datetime和 timestamp。如何在它們之間選擇是建表時必要的考慮。下面就談?wù)勊麄兊膮^(qū)別和怎么選擇。
1 區(qū)別 1.1 占用空間類型 | 占據(jù)字節(jié) | 表示形式 |
---|---|---|
datetime | 8 字節(jié) | yyyy-mm-dd hh:mm:ss |
timestamp | 4 字節(jié) | yyyy-mm-dd hh:mm:ss |
類型 | 表示范圍 |
---|---|
datetime | "1000-01-01 00:00:00.000000" to "9999-12-31 23:59:59.999999" |
timestamp | "1970-01-01 00:00:01.000000" to "2038-01-19 03:14:07.999999" |
timestamp翻譯為漢語即"時間戳",它是當(dāng)前時間到 Unix元年(1970 年 1 月 1 日 0 時 0 分 0 秒)的秒數(shù)。對于某些時間的計算,如果是以 datetime 的形式會比較困難,假如我是 1994-1-20 06:06:06 出生,現(xiàn)在的時間是 2016-10-1 20:04:50 ,那么要計算我活了多少秒鐘用 datetime 還需要函數(shù)進(jìn)行轉(zhuǎn)換,但是 timestamp 直接相減就行。
1.3 時區(qū)timestamp 只占 4 個字節(jié),而且是以utc的格式儲存, 它會自動檢索當(dāng)前時區(qū)并進(jìn)行轉(zhuǎn)換。
datetime以 8 個字節(jié)儲存,不會進(jìn)行時區(qū)的檢索.
也就是說,對于timestamp來說,如果儲存時的時區(qū)和檢索時的時區(qū)不一樣,那么拿出來的數(shù)據(jù)也不一樣。對于datetime來說,存什么拿到的就是什么。
還有一個區(qū)別就是如果存進(jìn)去的是NULL,timestamp會自動儲存當(dāng)前時間,而 datetime會儲存 NULL。
2 測試我們新建一個表
插入數(shù)據(jù)
查看數(shù)據(jù),可以看到存進(jìn)去的是NULL,timestamp會自動儲存當(dāng)前時間,而 datetime會儲存NULL
把時區(qū)修改為東 9 區(qū),再查看數(shù)據(jù),會會發(fā)現(xiàn) timestamp 比 datetime 多一小時
如果插入的是無效的呢?假如插入的是時間戳
結(jié)果是0000-00-00 00:00:00,根據(jù)官方的解釋是插入的是無效的話會轉(zhuǎn)為 0000-00-00 00:00:00,而時間戳并不是MySQL有效的時間格式。
那么什么形式的可以插入呢,下面列舉三種
//下面都是 MySQL 允許的形式,MySQL 會自動處理 2016-10-01 20:48:59 2016#10#01 20/48/59 201610012048593 選擇
如果在時間上要超過Linux時間的,或者服務(wù)器時區(qū)不一樣的就建議選擇 datetime。
如果是想要使用自動插入時間或者自動更新時間功能的,可以使用timestamp。
如果只是想表示年、日期、時間的還可以使用 year、 date、 time,它們分別占據(jù) 1、3、3 字節(jié),而datetime就是它們的集合。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/17866.html
摘要:和數(shù)據(jù)類型的用法在存儲字符串時,可以使用或者類型相同點和都可以存儲變長字符串且字符串長度上限為字節(jié)不同點速度快,不存在空間浪費,不處理尾部空格,上限為字節(jié),但是有存儲長度實際字節(jié)最大可用。 點贊再看,養(yǎng)成贊美的習(xí)慣,微信搜一搜【香菜聊游戲】關(guān)注我。 目錄 1、DATETIME、TIME...
摘要:示例指定了也就是零時區(qū),顯示的時間會加上本地時區(qū)的偏移小時。其實就是上面顯示時間時使用的形式除了能表示基本信息,還可以表示星期,但是一點也不容易讀,不建議使用。 原文對 ISO 8601 時間格式中 T 和 Z 的表述有一些錯誤,我已經(jīng)對原文進(jìn)行了一些修訂,抱歉給大家造成誤解。 最近使用 sequelize 過程中發(fā)現(xiàn)一個奇怪的問題,將某個時間插入到表中后,通過 sequelize 查...
閱讀 2786·2021-11-17 09:33
閱讀 2168·2021-09-03 10:40
閱讀 522·2019-08-29 18:45
閱讀 2955·2019-08-29 16:21
閱讀 612·2019-08-29 11:11
閱讀 3393·2019-08-26 12:00
閱讀 2946·2019-08-23 18:19
閱讀 1092·2019-08-23 12:18