2012-02-09 66 views
3

我正在調查我剛剛繼承的數據庫的一些性能問題。我可以看到,由於查詢將數據類型轉換爲日期,因此存在很多隱式轉換。它看起來幾乎所有的日期字段都有金錢數據類型。用於在SQL Server中存儲日期值的貨幣數據類型?

有人可以告訴我一個很好的和有效的理由,爲什麼有人會使用金錢數據類型的日期?

謝謝!

+3

有沒有好的和有效的理由。只有壞的和無效的。 – Oded 2012-02-09 11:43:04

回答

0

我只是想節省空間,並有子分鐘的間隔,但設計顯然是怪異

可能是爲了避免與此有關DATETIME和SMALLDATETIME界限,但如果你說這是經常迄今爲止鑄造 - 這不太可能。

更新:

由於作爲@馬丁·史密斯說 - 它不是節省空間 - 然後設計更加怪異。

還有一個建議 - 數據是從舊的傳統數據庫系統導入的,其中日期時間值以這種方式存儲。

Obvoiusly - 如果你尋找好的和有效的理由 - 有沒有

+3

它不會節省任何空間。 'datetime'和'money'都是8個字節。 – 2012-02-09 11:43:23

+0

@MartinSmith感謝您的留言,更新回答 – 2012-02-09 11:45:23

+0

非常感謝您的回覆。 – pesi 2012-02-09 12:51:57

6

這種做法絕對沒有好的和有效的理由。

datetimemoney都是8個字節。 datetimedate保留4個字節,爲time保留4個字節。

money的範圍從-922,337,203,685,477.5808922,337,203,685,477.5807。當從money轉換爲datetime時,整數部分將被視爲自1900-01-01以來的天數,小數部分表示爲一天的百分比。

這意味着你失去了在time部分精度(每0.0001增量=8.640秒),並能夠存儲數字過於龐大永遠cast成功地datetime獲得在date部分無用多餘的規模(其中有一個最大範圍9999 AD

如果可能的話修復模式。

+0

感謝您的快速響應。這證實了我的懷疑。我想這對於舊系統來說並不是那麼容易修復的。 – pesi 2012-02-09 12:47:20

相關問題