.Net Framework 與 SQL Server 2005 混亂的時間最大最小值

.Net Framework 與 SQL Server 2005 混亂的時間最大最小值

之前才跟 dotjum 聊到 Microsoft 在 DateTime 還有 SQL Server 2005 的最小最大時間非常地不一致,沒想到果然有人也碰過相同的困擾。

參考:

  1. C# DateTime.MinValue is not the same as SqlDateTime.MinValue
  2. Caution When passing Null or DateTime into Store Procedure

這其實也是我一直跟很多人講過的一個觀念:就憑我們的資質,我們遇到的 IT 技術問題絕大多數不可能在這世界上第一次遇到的。換句話說,絕大多數的情況下,我們所遇到的 IT 技術問題,在這世界上某個人一定遇到並且已經解決了!簡言之,善用關鍵字搜尋,解決問題。


.Net Framewrok 中,
DateTime.MinValue => 0001/01/01 00:00:00
SqlDateTime.MinValue.Value  => 1753/01/01 00:00:00

SQL Server 2005 中,
DateTime 最小值           => 1753/01/01 00:00:00
SmallDateTime 最小值   => 1900/01/01 00:00:00


.Net Framewrok 中,
DateTime.MaxValue           => 9999/12/31 23:59:59.999
SqlDateTime.MaxValue.Value   => 9999/12/31 23:59:59.
997

SQL Server 2005 中,
DateTime 最大值               => 9999/12/31 23:59:59.997
 

唉!是不是有點混亂呢!稍微處理不慎,可能就會有 Overflow 的問題會產生。