今天一时兴起想起了在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代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。

unix时间戳 为什么计算机时间要从1970年1月1日开始算起?相关推荐

  1. 为什么计算机时间要从1970年1月1日开始算起

    1970年1月1日... 为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是1970年1月1号呢?我想大部分接触过计算机的人都知道,但大家几乎都没有想过 ...

  2. 为什么计算机时间要从1970年1月1日开始算起?

    今天我们来讨论一个非常有意思的事,那就是你知道为什么计算机时间和众多的编程语言的时间都要从1970年1月1日开始算起呢,时间计时起点到底为什么是 1970年1月1号呢?我想大家应该都知道,但是我估计大 ...

  3. 计算机时间、unix时间、linux时间、java时间为何以1970年1月1日为原点?从1970年1月1日开始计算?

    最初计算机操作系统是32位,而时间也是用32位表示. System.out.println(Integer.MAX_VALUE); 2147483647 Integer在JAVA内用32位表示,因此3 ...

  4. Java的时间为何从1970年1月1日开始

    上周有同事问到几个和时间相关的问题,非常有意思,之前也没怎么想过,不知道大家是否想过这几个问题 在mac下发现System.nanoTime()在JDK7和JDK8下输出的值怎么完全不一样 Syste ...

  5. 为什么java中的时间是从1970年1月1日开始的?

    问题:Date date = new Date(0); System.out.println(date); 打印出来的结果:Thu Jan 01 08:00:00 CST 1970 也是1970年1月 ...

  6. unix时间戳转换c语言算法,聊聊时间(2)硬核算法篇——UNIX时间戳转UTC时间

    文/Edward 前一篇文章<聊聊时间(1)UNIX时间戳和UTC时间>中,我们讲述了计算机中UNIX时间戳和UTC时间的基本概念,以及简要地阐述了诸如STM32F103之类芯片简单功能R ...

  7. 漫话:为什么计算机起始时间是1970年1月1日?

    这是我的第 203 期分享 作者 | 漫画编程 来源 | 漫画编程(ID:mhcoding) 分享 | Java中文社群(ID:javacn666) 问题复现 1970-01-01对于开发者来说都是不 ...

  8. 漫画:为什么计算机起始时间是 1970 年 1 月 1 日?

    作者 | 漫话编程 来源 | 漫话编程(ID:mhcoding) 问题复现 1970-01-01对于开发者来说都是不陌生的,有些系统对于时间的处理如果不够好的话,就可能把时间显示成1970-01-01 ...

  9. 计算机的起始时间 1970年1月1日

    一.1970-01-01 Date date = new Date(0); System.out.println(date);//Thu Jan 01 08:00:00 CST 1970 查看 Dat ...

  10. java为什么计算时间从1970年1月1日开始

    今天在看Python  API 时,看到 time 模块 : The epoch is the point where the time starts. On January 1st of that  ...

最新文章

  1. 数字化转型案例:源自阿里,中台设计流程及方法
  2. 《信息安全技术健康医疗数据安全指南》国家标准
  3. 榜单|新冠病毒席卷全球,世界医疗水平大比拼
  4. 【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )
  5. linux实验试题 cp,51CTO博客-专业IT技术博客创作平台-技术成就梦想
  6. Apache Httpd常用命令
  7. 熊猫数据集_用熊猫掌握数据聚合
  8. debian8.7.1安装zabbix3.2
  9. 全面解析Oracle等待事件的分类、发现及优化
  10. 大陆和香港手机号正则校验
  11. pentaho server 9.2 配置mysql数据源
  12. 暴走P图APP隐私政策
  13. 润乾报表V4在weblogic下部署找不到授权文件的解决方法
  14. python startswith正则表达式_Python 正则表达式
  15. MATLAB2014a的安装
  16. Android 内核源码编译记录
  17. python求平均数保留两位小数_python求平均数、方差、中位数的例子
  18. 一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) 。
  19. 2050热身赛 1001 1004
  20. uiuc的计算机工程硕士学费标准,伊利诺伊大学香槟分校学费及生活费一览(附美国学费最贵大学TOP20榜单)...

热门文章

  1. 多元回归f检验matlab,matlab进行F检验
  2. xp提示计算机内存不足,xp系统提示配额不足的解决方法
  3. HTTP协议相关的网络经典五层模型
  4. 键盘按键发出声音,打不了字,提示启用筛选键
  5. 计算机启动黑屏时间很长,电脑开机黑屏时间长怎么办?[多图]
  6. 毕业设计之甘特图制作
  7. flutter 顶部导航栏TabBarView自定义下划线的宽度和圆角
  8. iOS之Swift实现二维码扫描
  9. SystemVerilog芯片验证 SV语言部分(一)
  10. java作业中数据分析与设计_Java课程设计——博客作业教学数据分析系统(201521123091 李嘉廉)...