我正在考慮將一些日期值存儲爲整數。 即201003150900數據庫:將日期存儲爲數字值
除了我失去了任何時區信息這個事實,還有什麼我應該關心他的解決方案嗎? 使用此列的任何查詢都將很簡單,即「查找之後或之前」。 即where datefield小於201103000000(明年3月以前)。
目前該應用程序正在使用MSSQL2005。 任何指向陷阱的指針讚賞。
我正在考慮將一些日期值存儲爲整數。 即201003150900數據庫:將日期存儲爲數字值
除了我失去了任何時區信息這個事實,還有什麼我應該關心他的解決方案嗎? 使用此列的任何查詢都將很簡單,即「查找之後或之前」。 即where datefield小於201103000000(明年3月以前)。
目前該應用程序正在使用MSSQL2005。 任何指向陷阱的指針讚賞。
爲什麼不使用正確的UNIX timestamps?它們也只是整數,但它們不像201103000000那樣寬。
+1使用既定的標準,而不是發明自己的標準。另外:一些操作 - 比如找到兩個日期之間的秒數 - 變得微不足道。 – 2010-03-15 01:23:43
有些操作 - 比如增加幾個月/年 - 幾乎不可能實現,無需將其重新設置爲日期/日期時間,並進行所有來回翻譯。內部表示已經是一個數字;爲什麼要推出自己的產品,並且必須自己寫圖書館? – 2010-03-15 15:25:11
在2038上見到你 – 2011-07-06 18:47:10
只需使用DATETIME或SMALLDATETIME數據類型,它們就更加靈活。
按照您建議的方式執行此操作的唯一原因是您的商業智能工具擁有時間維度成員名稱。如果這就是你打算使用它,那麼它是有道理的。
否則,像別人指出的那樣使用內置時間類型。
使用正常的日期時間數據類型有什麼問題? – 2010-03-15 01:21:30
我發現自己爲不同的UI /視圖解決方案做了很多時區偏移技巧。數據庫與應用程序主要使用的時區處於不同的時區。 – Chin 2010-03-15 01:34:02
重新設定不同的時區:以UTC存儲日期,'SELECT DATEDIFF(小時,GETDATE(),GETUTCDATE())'找到偏移量,並從那裏開始。這樣當您的數據庫服務器和/或用戶移動時,沒有任何變化。 – tadamson 2010-03-15 01:57:32