国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL 時間類型的選擇

瀏覽:2日期:2023-10-02 08:30:18
目錄DATETIMETIMESTAMP如何選擇如何存儲毫秒級時間結(jié)語

MySQL 提供了 DATETIME 和 TIMESTAMP 兩種非常相似的類型處理日期和時間,大部分情況下兩種都是 OK 的,但是有些情況二者會互有優(yōu)劣。

DATETIME

DATETIME 的時間跨度更大,可以從1001年到9999年,精度是秒。并且存儲的格式是將日期和時間打包使用 YYYYMMDDhhmmss格式的整數(shù)存儲,這個時間與時區(qū)無關(guān),需要占用8個字節(jié)的存儲空間。默認(rèn),MySQL 顯示 的DATETIME是有序的,明確的格式,例如2021-06-02 18:35:23。這是 ANSI 的標(biāo)準(zhǔn)日期時間格式。

TIMESTAMP

TIMESTAMP即時間戳,存儲的是自格林威治時間(GMT)1970年1月1日零點以來的秒數(shù)。和 Unix 系統(tǒng)的時間戳一樣。TIMESTAMP 僅需要4個字節(jié)存儲,因此能夠表示的時間跨度更小,從1970年到2038年。MySQL 提供了 FROM_UNIXTIME 和 UNIX_TIMESTAMP 函數(shù)來完成時間戳和日期之間的轉(zhuǎn)換。

在 MySQL 4.1版本后,TIMESTAMP 顯示的格式和 DATETIME 類似,但是,TIMESTAMP 的顯示依賴于時區(qū)。MySQL 的服務(wù)端、操作系統(tǒng)以及客戶端連接都有時區(qū)的設(shè)置。因此,如果時間是從多個時區(qū)存儲的話,那 TIMESTAMP 和 DATETIME 的差別就會很大。TIMESTAMP 會保留使用時的時區(qū)信息,而 DATETIME 僅僅是使用文本表示時間。

TIMESTAMP 還有額外的特性。默認(rèn)地,MySQL會在沒有指定值的情況下使用當(dāng)前時間插入到 TIMESTAMP列,而更新的時候如果沒有指定值會使用當(dāng)前時間更新該字段,以下面的測試表為例:

CREATE TABLE t_time_test ( id INT PRIMARY KEY, t_stamp TIMESTAMP, t_datetime DATETIME);

可以看到MySQL 給的默認(rèn)值就是當(dāng)前時間戳 CURRENT_TIMESTAMP,并且有個 ON UPDATE CURRENT_TIMESTAMP表示會隨之更新:

MySQL 時間類型的選擇

INSERT INTO t_time_test(id, t_datetime) VALUES(1, NULL), (2, ’2021-06-02 18:48:04’), (3, NULL);

可以看到 t_stamp 列自動填充了當(dāng)前時間。

MySQL 時間類型的選擇

這個特性使得我們可以物協(xié)程序維護(hù)數(shù)據(jù)更新時間字段,而交由 MySQL 完成。

如何選擇

從特性上看,可能會優(yōu)先選擇使用 TIMESTAMP 來存儲時間,相比 DATETIME 來說更高效。也有些人使用整數(shù)存儲 Unix 時間戳,實際上這種方式并不能獲益,而且整數(shù)還需要額外進(jìn)行處理,因此并不推薦這么做。但是一些情況需要注意不要使用 TIMESTAMP 存儲時間:

生日:生日肯定會有早于1970年的,會超出 TIMESTAMP 的范圍 有效期截止時間:TIMESTAMP 的最大時間是2038年,如果用來存類似身份證的有效期截止時間,營業(yè)執(zhí)照的截止時間等就不合適。 業(yè)務(wù)生存時間:互聯(lián)網(wǎng)時代講究快,發(fā)展(死得)快。如果要成為長久存在的企業(yè),那么你的業(yè)務(wù)時間很可能在2038年還在繼續(xù)運(yùn)營,畢竟現(xiàn)在都2021年了。如果你覺得公司業(yè)務(wù)挺不到2038年,那沒關(guān)系。當(dāng)然,如果幸運(yùn)地挺到2038年,請務(wù)必寫下一條待辦事項:到2038年1月1日前修改數(shù)據(jù)表時間戳字段類型。 如何存儲毫秒級時間

通常這個時候需要使用 BIGINT 來將時間轉(zhuǎn)換為整型存儲,或者是使用浮點數(shù),用分?jǐn)?shù)部分表示秒精度一下的時間,這兩種方式都可行。當(dāng)然,這個時候需要應(yīng)用支持做格式轉(zhuǎn)換。

結(jié)語

從安全穩(wěn)妥的角度考慮,建議還是優(yōu)先選擇 DATETIME 類型,雖然相比 TIMESTAMP 會犧牲一點性能,但是 TIMESTAMP 的時間范圍是硬傷,不要埋下一個隱患,等到真的2038年,你的公司可能是上市公司的時候,程序員可能會遭遇洪水般的 bug 沖擊而不明所以,結(jié)果公司的股價迎來閃崩!然后找出來這個程序員,發(fā)現(xiàn)是曾經(jīng)公司的大神,目前的股東,已經(jīng)實現(xiàn)財務(wù)自由的你!你說尷尬不尷尬?

以上就是MySQL 時間類型的選擇的詳細(xì)內(nèi)容,更多關(guān)于MySQL 時間類型的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 成年女人免费又黄又爽视频 | 一区二区三区不卡在线观看 | 国产精品视频网址 | 在线成人免费观看国产精品 | 九九视频在线播放 | 真人一级毛片免费完整视 | 韩国一级特黄清高免费大片 | 久久青草免费免费91线频观看 | 免费中国一级啪啪片 | 亚洲精品第一区二区在线 | 五月色婷婷综合开心网亚 | 日本亚欧乱色视频在线观看 | 日本免费a级片 | 久久青草国产手机看片福利盒子 | 天天看夜夜看 | 日韩美女视频在线观看 | 欧美日韩高清不卡一区二区三区 | 91一区| xxx本日| 中文字幕在线成人免费看 | 久草在线免费资源站 | 国内精品久久久久影院亚洲 | 亚洲久久在线观看 | 精品久久久久久国产 | 欧美色综合高清视频在线 | 免费观看日本特色做爰视频在线 | 免费视频男女 | 日韩 欧美 自拍 在线 视频 | 久久久久久一品道精品免费看 | 青青自拍视频一区二区三区 | 亚洲一区二区三区四区 | 国产资源在线免费观看 | 国产福利一区二区在线精品 | 免费观看一级欧美大 | 一级国产交换配乱淫 | 久久99精品久久久久久久不卡 | 亚洲3p| 特级片视频 | 免费观看a级网站 | 国产91精品高清一区二区三区 | 九九精品视频在线播放8 |