1.公開數據庫中自動生成的唯一二進制數字的數據類型。
2.timestamp 通常用作給表行加版本戳的機制。
3.存儲大小為 8 個字節。 不可為空的 timestamp 列在語義上等價於 binary(8) 列。可為空的 timestamp 列在語義上等價於 varbinary(8) 列。這將導致在C#程序中獲取到的timestamp類型則變成了byte[]類型。所以如果我們需要從數據庫中獲取並使用這個時間戳的話就必需經過轉換。
4.timestamp 數據類型只是遞增的數字,不保留日期或時間。 若要記錄日期或時間,請使用 datetime 數據類型。
5.一個表只能有一個 timestamp 列。每次插入或更新包含 timestamp 列的行時,timestamp 列中的值均會更新。對行的任何更新都會更改 timestamp 值。
6.總結:SQL Server timestamp 數據類型與時間和日期無關。SQL Server timestamp 是二進制數字,它表明數據庫中數據修改發生的相對順序。實現 timestamp 數據類型最初是為了支持 SQL Server 恢復算法。每次修改頁時,都會使用當前的 @@DBTS 值對其做一次標記,然后 @@DBTS 加1。這樣做足以幫助恢復過程確定頁修改的相對次序,但是 timestamp 值與時間沒有任何關系。@@DBTS 返回當前數據庫最后使用的時間戳值。插入或更新包含 timestamp 列的行時,將產生一個新的時間戳值。
時間戳字段在數據庫中起什么作用:
1.給一個表加一個時間戳字段(timestamp),假設某條記錄同時被兩個人A和B讀取並且正在修改。A先修改完成然后保存了,然后B再保存的時候,會由於時間戳不一致(因為A之前先保存修改了時間戳)導致B保存失敗。timestamp是數據庫記錄版本控制的好東西,Linq to sql, entity framework都有很好的支持。
2.數據庫優化:當在處理幾十萬條並發數據時,我們就可以在使用最頻繁的表中添加一列字段,類型為timestamp,添加完畢后系統會自動生成相應的唯一值,如果數據記錄有任何改動,timestamp值也會做相應的調整。
最近被這個時間戳虐到了,,,這幾篇博文解釋的很好,感謝博主
1.http://www.cnblogs.com/iampkm/p/4082916.html
2.http://www.cnblogs.com/windows/articles/2149701.html