为什么编程语言以及数据库要从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代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。   



最新内容请见作者的GitHub页:http://qaseven.github.io/

   

目录
相关文章
|
1月前
|
NoSQL 关系型数据库 数据挖掘
编程语言和数据库:你的技能基础
编程语言和数据库:你的技能基础
|
8月前
|
数据库
计算数据库某个表大小
计算数据库某个表大小
|
8月前
|
缓存 弹性计算 分布式计算
阿里云适合建网、web应用、数据分析和计算、数据库系统的云服务器价格参考
阿里云服务器新客专享,新用户完成账号实名认证,享受优惠价格购买计算型、通用型、内存型云服务器爆款配置特价优惠,限1-2台,这些云服务器主要适合搭建网站、web应用、数据分析和计算、数据库系统等中小类型和规模的企业级应用。
347 1
阿里云适合建网、web应用、数据分析和计算、数据库系统的云服务器价格参考
|
11月前
|
存储 机器学习/深度学习 NoSQL
「图型计算架构」GraphTech生态系统2019-第1部分:图型数据库
「图型计算架构」GraphTech生态系统2019-第1部分:图型数据库
|
11月前
|
SQL 关系型数据库 MySQL
阿里云数据库SQL挑战赛赛题三:计算三角形面积
阿里云开发者社区及数据库团队联合举办「阿里云数据库SQL挑战赛」,来自阿里云数据库团队的技术专家为各位开发者准备了三道由浅入深的赛题,快来试试你有多会写 SQL 吧。此外,我们还为开发者提供了 3 个月免费的 RDS MySQL Serverless 资源,参赛的同时还能体验云上开发的便利性。
778 1
|
数据库
【已解决】数据库常见场景应用计算次日留存率
【已解决】数据库常见场景应用计算次日留存率
363 0
|
SQL Oracle 关系型数据库
数据库时间获取与计算
数据库时间获取与计算
|
弹性计算 Cloud Native 关系型数据库
【官方首发】—阿里云云计算&数据库ACP认证的解析与实战系列电子书来啦!
重磅推出【云计算、数据仓库、关系型数据库】ACP认证的解析与实战电子书!认证备考必备学习资料,免费下载!
【官方首发】—阿里云云计算&数据库ACP认证的解析与实战系列电子书来啦!
|
存储 SQL BI
开源 SPL 打破数据库计算的封闭性
开源 SPL 打破数据库计算的封闭性
开源 SPL 打破数据库计算的封闭性
|
机器学习/深度学习 人工智能 自然语言处理
AI:几张图理清人工智能与机器学习、知识发现、数据挖掘、统计学、模式识别、神经计算学、数据库之间的暧昧关系
AI:几张图理清人工智能与机器学习、知识发现、数据挖掘、统计学、模式识别、神经计算学、数据库之间的暧昧关系
AI:几张图理清人工智能与机器学习、知识发现、数据挖掘、统计学、模式识别、神经计算学、数据库之间的暧昧关系

热门文章

最新文章