.NET Framework的DateTime與SQL Server的datetime比較

來源:互聯網
上載者:User
    .NET的DateTime表示的時間範圍更廣了,可以表示從0001年1月1日開始直到9999年12月31日結束,共9999年的時間。零值時間是範圍起始時間,即0001年1月1日。

    SQL Server的 datetime類型只可以表示從1753年1月1日開始到9999年12月31日結束,共8247年的時間。零值時間卻不是範圍起始時間,而是1900年1月1日。從1753年1月1日至1900年1月1日之間的時間值是用負數表示的。

    雖然SQL Server表示時間的範圍小些,但時間的精度卻要高出許多。SQL Server的datetime的時間精度是1/300秒,即3.33毫秒。而.NET的DateTime的時間精度是1/10秒,即100毫秒。顯然 SQL Server的時間精度比.NET高30倍。

    不過,.NET Framework 從 2.0開始,DateTime實現了本地時間和國際標準時間間的處理。這對於經常需要進行時區轉換的應用來說無疑是個福音。
 
    在資料結構方面,SQL Server的datetime是一個8位元組的儲存結構。其中的4個位元組儲存按天數計算的日期值,另外4個位元組儲存按1/300秒計算的時間值。

    而.NET的DateTime是一個struct實值型別,實際上相當於用64位不帶正負號的整數來儲存,也佔8個位元組的空間。不過只有其中的62位是表示時間的滴答數(Ticks),另外2位標明時間類型是本地時間還是世界時間等等。所謂的滴答數並沒有直接區分日期和時間,通通按100毫秒一次計算從0001年 1月1日零時起經過的滴答數。因此,從DateTime取日期和時間都是通過計算得出來的,當然內部實現只是用簡單的整除加模運算搞定的。

    由於DateTime是一個實值型別,在需要將DateTime值作為對象來訪問的地方,就可能就存在隱式或顯式的裝箱和拆箱操作。這也是需要注意的地方。

    相信通過這樣的比較可以更瞭解一些基礎類型的內幕,今後編碼時心裡就跟明鏡兒似的,清清楚楚。

李戰(leadzen).深圳 2008-2-12

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.