關於對時間戳timestamp理解

2021-05-17 16:34:12 字數 987 閱讀 6472

關於對時間戳

timestamp理解

一直對時間戳的概念模糊,並且網上也有很多朋友也都誤認為:是

乙個時間字段,每次增加資料時,填入當前的時間值。導致也誤導了很多朋友。

這次看了很多資料,糾正一下這個錯誤,自己也搞清楚:

資料庫中自動生成的唯一二進位制數字,與時間和日期無關的,

通常用作給錶行加版本戳的機制。儲存大小為

8 個位元組。

每個資料庫都有乙個計數器,當對資料庫中包含timestamp 列的表執行插入或更新操作時,該計數器值就會增加。該計數器是資料庫時間戳。這可以跟蹤資料庫內的相對時間,而不是時鐘相關聯的實際時間。乙個表只能有乙個timestamp 列。每次修改或插入包含timestamp 列的行時,就會在timestamp 列中插入增量資料庫時間戳值。這一屬性使timestamp 列不適合作為鍵使用,尤其是不能作為主鍵使用。對行的任何更新都會更改timestamp 值,從而更改鍵值。如果該列屬於主鍵,那麼舊的鍵值將無效,進而引用該舊值的外來鍵也將不再有效。如果該錶在動態游標中引用,則所有更新均會更改游標中行的位置。如果該列屬於索引鍵,則對資料行的所有更新還將導致索引更新。

使用某一行中的timestamp 列可以很容易地確定該行中的任何值自上次讀取以後是否發生了更改。如果對行進行了更改,就會更新該時間戳值。如果沒有對行進行更改,則該時間戳值將與以前讀取該行時的時間戳值一致。若要返回資料庫的當前時間戳值,請使用@@dbts。

在控制併發時起到作用:

使用者a/b同時開啟某條記錄開始編輯,儲存是可以判斷時間戳,因為記錄每次被更新時,系統都會自動維護時間戳,所以如果儲存時發現取出來的時間戳與資料庫中的時間戳如果不相等,說明在這個過程中記錄被更新過,這樣的話可以防止別人的更新被覆蓋。

參考:http://blog.csdn.net/xushichang/archive/2009/08/01/4399316.aspx

關於對時間戳timestamp理解

一直對時間戳的概念模糊,並且網上也有很多朋友也都誤認為 是 乙個時間字段,每次增加資料時,填入當前的時間值。導致也誤導了很多朋友。這次看了很多資料,糾正一下這個錯誤,自己也搞清楚 資料庫中自動生成的唯一二進位制數字,與時間和日期無關的,通常用作給錶行加版本戳的機制。儲存大小為 8 個位元組。每個資料...

PHP對時間戳的處理

時間戳是指格林威治時間1970年01月01日00時00分00秒 北京時間1970年01月01日08時00分00秒 起至現在的總毫秒數。現在是乙個10位數,隨著時間推移,以後會是11位,12位。php獲取當前日期的年,月,日 echo date y echo date m echo date d 本月...

ios 對時間排序

排序 對時間進行排序 nsmutablearray dataarray nsmutablearray alloc initwithcapacity 0 nsmutabledictionary dir nsmutabledictionary alloc init dir setobject 2012 ...