好了,現在讓我舉一個例子在sql server上存儲BigInt的日期 - 這是一個好主意嗎?
日期:15.12.2012 00:16:39
現在,這將被存儲爲
20121215001639
現在,例如,如果我想檢索行超過30分鐘(30 * 60 = 1800秒)
我可以做同樣
where date<20121215001639+1800
那麼這會是一種表現方式,而不是存儲爲日期時間?
好了,現在讓我舉一個例子在sql server上存儲BigInt的日期 - 這是一個好主意嗎?
日期:15.12.2012 00:16:39
現在,這將被存儲爲
20121215001639
現在,例如,如果我想檢索行超過30分鐘(30 * 60 = 1800秒)
我可以做同樣
where date<20121215001639+1800
那麼這會是一種表現方式,而不是存儲爲日期時間?
我完全同意上面的marc_s的評論,但我決定做一個測試,只是爲了好玩。
我創建了兩個表格,其中一個帶有datetime
列,另一個帶有bigint
列,表示相同的數據。
這裏是SQL小提琴:http://www.sqlfiddle.com/#!3/74976/3
我已經運行此查詢500,1000和5000記錄每一次注意到,執行計劃是相同的,所以從性能上來看有一個在沒有收穫使用bigint
。
然而,bigint
方法有明顯的缺點;他們中的一些:
bigint
需要更多的代碼,以每月寫感謝您的評論。有沒有任何網站顯示如何使用日期類型在sql server上有很多例子?我想保留所有的日期時間格林威治標準時間 – MonsterMMORPG
@MonsterMMORPG我認爲這足以檢查出Transact SQL [日期時間文檔](http://msdn.microsoft.com/en-us/library/ms187819(v = sql .105).aspx)和[日期和時間函數](http://msdn.microsoft.com/en-us/library/ms186724(v = sql.105).aspx)。 – GolfWolf
也用於存儲UTC/GMT值,如果遇到任何其他問題,請確保您使用'getutcdate()'而不是'getdate()' – GolfWolf
如果它是一個日期 - 將它存儲爲'DATE'或'DATETIME' - 爲什麼要把它存儲爲不是它的東西?有什麼好處?另請參閱:[踢壞的習慣:選擇錯誤的數據類型](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/12/bad-habits-to-kick-using-the-wrong- data-type.aspx) - 你應該總是使用最合適的數據類型 - 畢竟這就是他們的存在! –
加入1800不會給你30分鐘的格式。 –