我想保存用戶在執行各種活動時的日期和時間。對於日期,我決定在數據庫中使用DateTime Column,對於時間我處於兩難境地,需要什麼數據類型。在數據庫中存儲「時間」 - 使用什麼DateTime/Interger/VarChar
我知道在SQL Server 2008時間數據類型已經引入,但我使用的是舊版本,即Sql Server 2005所以我需要你的建議來證明我的理解是真的還是假的。
我見過使用varchar或DateTime將時間存入數據庫的人。但我期待使用Integer數據類型。
我選擇的理由是表現。
以下是我給自己的理由。
假設
任何數據保存到數據庫必須同意下列規則
日期將被存儲在格式mm/dd/yyyy的HH:MM:SS,其中HH:MM:SS將總是00:00:00 時間將被存儲在有效的格式(從HH:MM:SS爲HHMMSS)
if hh is 00
then MMss
and if MM is 00
then ss
and if ss is 00
then 0
hh will range in between 0-23
MM will range in between 0-59
ss will range in between 0-59
i.e. few examples
00:00:00 = 0
00:01:00 = 100
01:00:00 = 10000
13:00:00 = 130000
個人雖然爲什麼它會表現更好。
SELECT * FROM Log WHERE loginDate = '05/23/2011'
AND loginTime BETWEEN 0 AND 235959 --Integer Comparison
當基於日期時間使用JOINS時,考慮只考慮加入日期部分。
無論時間如何,在共同日期的基礎上加入兩個表。如果使用DateTime作爲存儲數據類型,我認爲類型轉換會嚴重影響這種情況。
由於Sql將不得不做一個整數比較,並且不需要類型轉換,因此它應該表現得更好。
編輯
一個我能發現的缺點是,當我想這兩個時間之間的差多少時間已經3天用了,希望那將成爲整個應用程序管理的噩夢。
如果您需要同時存儲這兩個數據,爲什麼不用datetime存儲時間? –
@JeremySmyth:在某些地方我們需要跟蹤開始時間和結束時間,而且我仍然在尋找正確和更好的方法......請建議 –
的優缺點沒有任何理由不能跟蹤,根據您將它作爲DateTime的一部分存儲的時間進行計算和查詢。只需使用現有的字段。 –