qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          為什么編程語言以及數據庫要從1970年1月1日開始計算時

          今天一時興起想起了在SQL Server中使用DateTime.MinValue插入時間時報錯的問題,原因就在于數據庫的最小時間和.Net里的最小時間不一致導致的,網上查閱了些資料,找到如下結果

            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
          SmallDateTime 最大值         =>2079.6.6

            所以需要在數據庫插入最小時間時不能使用DateTime.MinValue,需要使用

            SqlDateTime.MinValue.Value。

            好了到現在SQL Server數據庫時間問題解決了,突然又想起了系統中有個啥1970年1月1日的時間。那這個時間又是啥來來歷呢,懷著好奇寶寶的心理我有在網上查閱了一番得到如下解釋:

            1.可以簡單的這樣認為:UNIX系統認為1970年1月1日0點是時間紀元,所以我們常說的UNIX時間戳是以1970年1月1日0點為計時起點時間的。這個解釋是懶人最愛^_^

            2.這個比較科學

            最初計算機操作系統是32位,而時間也是用32位表示。32位能表示的最大值是2147483647。另外1年365天的總秒數是31536000,2147483647/31536000 = 68.1,也就是說32位能表示的最長時間是68年,而實際上到2038年01月19日03時14分07秒,便會到達最大時間,過了這個時間點,所有32位操作系統時間便會變為10000000 00000000 00000000 00000000,也就是1901年12月13日20時45分52秒,這樣便會出現時間回歸的現象,很多軟件便會運行異常了。

            到這里,我想問題的答案已經出來了:因為用32位來表示時間的最大間隔是68年,而最早出現的UNIX操作系統考慮到計算機產生的年代和應用的時限綜合取了1970年1月1日作為UNIX TIME的紀元時間(開始時間),至于時間回歸的現象相信隨著64為操作系統的產生逐漸得到解決,因為用64位操作系統可以表示到292,277,026,596年12月4日15時30分08秒,相信我們的N代子孫,哪怕地球毀滅那天都不用愁不夠用了,因為這個時間已經是千億年以后了。

          posted on 2013-09-17 13:06 順其自然EVO 閱讀(285) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2013年9月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 滦南县| 沈丘县| 宣武区| 平泉县| 七台河市| 康保县| 明溪县| 曲阳县| 巴马| 新龙县| 南康市| 会同县| 镇沅| 汉阴县| 社会| 牙克石市| 陆丰市| 大渡口区| 多伦县| 潜江市| 钟山县| 长白| 大庆市| 乌海市| 瑞安市| 温州市| 兰州市| 吉水县| 鹤岗市| 太仆寺旗| 巫山县| 温州市| 甘谷县| 陆河县| 彰化市| 彭州市| 林周县| 古交市| 定远县| 洛浦县| 德化县|