为什么计算机时间要从1970年1月1日开始算起?
日期:2011-11-04 阅读:194 分类:综合信息
今天一时兴起想起了在SQL
Server中使用DateTime.MinValue插入时间时报错的问题,原因就在于数据库的最小时间和.Net里的最小时间不一致导致的,网上查阅了些资料,找到如下结果
Net Framewrok 中,
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代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。
来自:cnblogs
相关文章
- Javascript中Date对象使用 2008-09-18
- Linux通过命令获取到当前日期作为变量使用 2011-06-26
- java的date类 2009-08-04
- 日期正则表达式 2009-03-09
- Date4j,一个简约的日期处理类库 2011-12-05
- javascript 在各个浏览器中的超时时间 2009-02-05
- 2012年各大银行校园招聘的时间 2011-12-04
- 揭秘人体各器官衰老时间 2008-12-18
- 在不同语言中转换获取时间戳(timestamp) 2011-10-17
- 时间复杂度 2010-07-07
- 10个效果最佳的编程使用的字体 2011-07-26
- 你的网站,我的路 2009-02-19
- 国外程序员推荐的免费编程书籍资源 2011-11-04
- c#好的编程习惯 2009-02-24
- 世界上著名的19位编程大师 2011-10-28
- html5初试Web SQL Database(数据库) 2011-12-26
- 黑客公开CSDN网站数据库 600余万用户资料泄露 2011-12-23
- HTML5应用下载维基百科离线使用 2011-12-31
- 甲骨文称MySQL cluster 7.2实现每分钟10亿次查询 2012-02-17