回覆列表
-
1 # 程式設計師小助手
-
2 # cr180
用int 10,存放十位時間戳就可以了,不夠就bigint,因為判斷、比較、轉換、時區處理都很方便,效能也要好點,在我的開發生涯裡從來沒有日期的概念,都是時間戳。如果需要在db看直觀的日期,另外開欄位給他
用int 10,存放十位時間戳就可以了,不夠就bigint,因為判斷、比較、轉換、時區處理都很方便,效能也要好點,在我的開發生涯裡從來沒有日期的概念,都是時間戳。如果需要在db看直觀的日期,另外開欄位給他
引言
今天我們把知識的焦點投向資料庫方面,因為資料庫是應用程式的基石,是一切生產的動力。先說一個小小的知識點,在儲存日期時間時,應該選用 timestamp 時間戳型別,還是應該用 datettime 型別?
兩者有何不同,效率如何,以及各自的優劣。
學習時間MySQL中的 timestamp 通常用於跟蹤記錄的更改,並且通常在每次記錄更改時進行更新。如果要儲存特定值,則應使用 datetime 欄位。
如果你在這兩者之間猶豫不決,那就請優先使用時間戳。買搜狗中提供了。內建的函式用於時間,日期格式轉換和計算,使用起來非常方便。比如日期時間差計算:
SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)
或者是對UNIX時間戳的格式轉換:
SELECT UNIX_TIMESTAMP(my_datetime)
如果要使用PHP對記錄進行查詢,則可以很容易地將值的格式更改為UNIX時間戳。
一個重要的區別是,DATETIME表示日期(如在日曆中查詢),和時間(如在時鐘上可以看到),而TIMESTAMP表示明確定義的時間點。
如果應用程式處理時區,那麼這可能非常重要。 比如多久以前是"2019-09-01 16:31:00"? 這取決於你所在的時區。對我來說,這只是幾秒鐘前,對你來說,它可能代表將來的時間。
相應地,如果我說自“ 1970-01-01 00:00:00 UTC”以來的1283351460秒,那麼您確切地知道我在說什麼時間點。
深入學習時間戳 timestamp 在系統失去改變之後,會自動變化。這在程式生產資料時,會有影響。我們透過例子來說明。
首先在系統變數中檢視 time_zone 相關配置。
建立新表並寫入兩個數值。
檢視寫入的資料。
修改時區,再次查看錶內的值。我們發現,timestamp 型別的欄位時間隨著時區的改變發生了改變。而 datetime 欄位則不會改變。
寫在最後本文透過對比 timestamp & datetime 欄位的優劣和使用場景進行了闡述,並使用例子展示 timestamp 的便捷性,和隱藏的問題。
Happy coding :_)