亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL 時(shí)間類型的選擇

 更新時(shí)間:2021年06月05日 11:24:53   作者:島上碼農(nóng)  
MySQL 有多種類型存儲日期和時(shí)間,例如 YEAR 和 DATE。MySQL 的時(shí)間類型存儲的精確度能到秒(MariaDB 可以到毫秒級)。但是,也可以通過時(shí)間計(jì)算達(dá)到毫秒級。時(shí)間類型的選擇沒有最佳,而是取決于業(yè)務(wù)需要如何處理時(shí)間的存儲。

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

DATETIME

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

TIMESTAMP

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

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

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

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

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

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

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

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

如何選擇

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

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

如何存儲毫秒級時(shí)間

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

結(jié)語

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

以上就是MySQL 時(shí)間類型的選擇的詳細(xì)內(nèi)容,更多關(guān)于MySQL 時(shí)間類型的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Sphinx/MySQL 協(xié)議支持與SphinxQL應(yīng)用實(shí)例

    Sphinx/MySQL 協(xié)議支持與SphinxQL應(yīng)用實(shí)例

    Sphinx/MySQL 協(xié)議支持與SphinxQL應(yīng)用例子,供大家學(xué)習(xí)參考
    2013-02-02
  • 關(guān)于django連接mysql數(shù)據(jù)庫并進(jìn)行數(shù)據(jù)庫的創(chuàng)建的問題

    關(guān)于django連接mysql數(shù)據(jù)庫并進(jìn)行數(shù)據(jù)庫的創(chuàng)建的問題

    這篇文章主要介紹了django連接mysql數(shù)據(jù)庫并進(jìn)行數(shù)據(jù)庫的創(chuàng)建,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • MySQL中UPDATE與DELETE語句的使用教程

    MySQL中UPDATE與DELETE語句的使用教程

    這篇文章主要介紹了MySQL中UPDATE與DELETE語句的使用教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-12-12
  • MySQL約束constraint用法詳解

    MySQL約束constraint用法詳解

    大家都知道MySQL中經(jīng)常會需要創(chuàng)建父子表之間的約束,下面這篇文章主要給大家介紹了關(guān)于MySQL約束constraint用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MySQL MGR 有哪些優(yōu)點(diǎn)

    MySQL MGR 有哪些優(yōu)點(diǎn)

    這篇文章主要介紹了MySQL MGR 有哪些優(yōu)點(diǎn),文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)MySQL mgr,感興趣的朋友可以了解下
    2020-08-08
  • mysql備份腳本并保留7天

    mysql備份腳本并保留7天

    這篇文章主要介紹了mysql備份腳本并保留7天,需要的朋友可以參考下
    2019-09-09
  • Mysql錯誤:Too many connections的解決方法

    Mysql錯誤:Too many connections的解決方法

    這篇文章主要給大家介紹了關(guān)于Mysql錯誤Too many connections的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • MySQL數(shù)據(jù)庫表被鎖、解鎖以及刪除事務(wù)詳解

    MySQL數(shù)據(jù)庫表被鎖、解鎖以及刪除事務(wù)詳解

    這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫表被鎖、解鎖以及刪除事務(wù)的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 查看MySQL初始密碼并修改的正確方式

    查看MySQL初始密碼并修改的正確方式

    這篇文章主要給大家介紹了關(guān)于查看MySQL初始密碼并修改的正確方式,MySQL是一款廣泛使用的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),安裝后找回初始密碼是MySQL使用中的一個(gè)基礎(chǔ)問題,需要的朋友可以參考下
    2023-10-10
  • Mac下MySQL安裝配置教程

    Mac下MySQL安裝配置教程

    這篇文章主要為大家詳細(xì)介紹了Mac下MySQL安裝配置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05

最新評論