引言
今天我們把知識的焦點投向數(shù)據(jù)庫方面,因為數(shù)據(jù)庫是應用程序的基石,是一切生產(chǎn)的動力。先說一個小小的知識點,在存儲日期時間時,應該選用 timestamp 時間戳類型,還是應該用 datettime 類型?
兩者有何不同,效率如何,以及各自的優(yōu)劣。
學習時間MySQL中的 timestamp 通常用于跟蹤記錄的更改,并且通常在每次記錄更改時進行更新。如果要存儲特定值,則應使用 datetime 字段。
如果你在這兩者之間猶豫不決,那就請優(yōu)先使用時間戳。買搜狗中提供了。內(nèi)置的函數(shù)用于時間,日期格式轉(zhuǎn)換和計算,使用起來非常方便。比如日期時間差計算:
SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)
或者是對UNIX時間戳的格式轉(zhuǎn)換:
SELECT UNIX_TIMESTAMP(my_datetime)
如果要使用PHP對記錄進行查詢,則可以很容易地將值的格式更改為UNIX時間戳。
一個重要的區(qū)別是,DATETIME表示日期(如在日歷中查找),和時間(如在時鐘上可以看到),而TIMESTAMP表示明確定義的時間點。
如果應用程序處理時區(qū),那么這可能非常重要。 比如多久以前是'2019-09-01 16:31:00'? 這取決于你所在的時區(qū)。對我來說,這只是幾秒鐘前,對你來說,它可能代表將來的時間。
相應地,如果我說自“ 1970-01-01 00:00:00 UTC”以來的1283351460秒,那么您確切地知道我在說什么時間點。
深入學習時間戳 timestamp 在系統(tǒng)失去改變之后,會自動變化。這在程序生產(chǎn)數(shù)據(jù)時,會有影響。我們通過例子來說明。
首先在系統(tǒng)變量中查看 time_zone 相關配置。
創(chuàng)建新表并寫入兩個數(shù)值。
查看寫入的數(shù)據(jù)。
修改時區(qū),再次查看表內(nèi)的值。我們發(fā)現(xiàn),timestamp 類型的字段時間隨著時區(qū)的改變發(fā)生了改變。而 datetime 字段則不會改變。
寫在最后本文通過對比 timestamp & datetime 字段的優(yōu)劣和使用場景進行了闡述,并使用例子展示 timestamp 的便捷性,和隱藏的問題。
Happy coding :_)
我是 @程序員小助手 ,持續(xù)分享編程知識,歡迎關注。