没有所谓的 1875 纪元,美国 150 多岁老人领社保福利不是 COBOL 语言的锅
近期,一位美国政府官员曾宣称:“我们这里有些人看起来都已经150岁了”,并指出这些人正在领取社会保障福利。由此,有人开始流传这样一种说法:社会保障局(SSA)在存储日期时使用了一个1875年的纪元,把那些未知出生年份的记录存为0,从而默认显示为1875年。
这种观点的起源可以追溯到某个帖子,帖子中有人调侃道:
“看起来埃隆那群天才程序员根本就不懂COBOL的工作原理。社会保障系统正是运行在COBOL上,而COBOL并没有专门的日期或时间类型。于是日期就以数字形式存储,按照ISO 8601标准计算,纪元定在了150年前(1875年)——也就是米制标准的开始。结果如果不知道某个日期,就会存储成0,而在COBOL中这就会默认解析为1875年,也就是150年前。”
然而,笔者对此并不认同,主要基于以下几点理由:
数据库中存在1875年前的出生年份
2007年,社会保障局曾发布过一份数据集,该数据集包含了在2007年1月之前发放的社会保障号码持有者的收入记录(约占全部数据的1%)。在这份数据集中,他们明确说明:
- 移除了出生年份早于1870年的5,935条记录
- 移除了出生年份等于2007的1,096条记录
- 以及少数缺失出生年份的记录
这表明,SSA的数据库中确实保存了1875年前(甚至1869年及更早)的出生年份数据,并非将未知年份一律默认为1875。
数据中没有1875年出生人数激增的异常
如果系统将所有未知出生年份的记录默认转换为1875年,那么在统计数据中,1875年的出生人数应该会异常增多。但实际上,从公开数据来看,并不存在这样一个“高峰”。(注:该数据集只是1%的样本,若存在默认值问题,趋势应当更加明显。)
社会保障局并未使用ISO 8601标准存储日期
负责跟踪社会保障福利支付的主记录(Master Beneficiary Record, MBR)建立于1962年,这远早于ISO 8601标准于1988年的发布。即便是其前身ISO 2016标准也在1976年发布,并且并没有任何依据指向1875年。实际上,有研究论文基于SSA数据指出,SSA对生日等信息的存储采用的是固定宽度格式,而不是ISO 8601标准的日期字符串格式。
The data abstracted from the MBR consisted of a 26-character record for each deceased individual. The four data items on each record were… the month and year of death
ISO 8601标准本身并不涉及纪元概念
ISO 8601仅仅是一种用于表示日期和时间的字符串格式,其本质并不是基于数字计算时间流逝,因此根本无需设定一个“纪元”。虽然ISO 8601:2004版曾固定引用1875年5月20日——即《米制公约》在巴黎签署的那一天——作为参考日期,但这一引用在ISO 8601-1:2019版中已被移除。换句话说,这个日期仅用于定义格里高利历,并非作为一个时间计数的起点。
没有任何证据显示1875年被用作时间计算的起点
经过查找,笔者没有发现任何系统或标准会将1875年作为时间纪元。尤其在COBOL语言中,也没有这样的约定或实践。所有迹象都表明,所谓的“1875纪元”只是个误解。
总的来说,从SSA的数据实践、存储方式以及国际标准的角度来看,都没有任何证据支持“1875纪元”这一说法。该观点看似有趣,但实际上缺乏坚实的依据。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
没有处理过遗留项目,别自称资深工程师
大家都不喜欢维护遗留项目,我也不例外。命运总爱跟人开玩笑,最近一个遗留项目正好落到了我手上。虽然在这个项目上工作的经历并没有减少我对遗留系统的厌恶,反而让我对当下所采用的流程与实践有了更深刻的认识。 我为自己所在的团队感到自豪,因为我们遵循了许多业界最佳实践: 编写简洁且易维护的代码,并配以自动化测试 积极参与代码合并请求和任务评审 合并到主分支后,当天就能将应用推向生产环境 高度采用敏捷开发模式 当然,一切并非尽善尽美。合并请求中偶尔会出现一些无关痛痒的建议和讨论;运维团队有时也会搞砸一些事情(至少在我们开发人员看来是这样);而产品负责人也时不时催促我们加快推出某些“简单”的新功能……总的来说,情况还算不错。 穿越回Ant时代 由于团队表现出色,公司决定将我们的开发效率借调给另一个由其他部门负责的产品。令我们略感失望的是,这个项目不仅使用的是较老版本的Java,其代码风格也与我们的习惯大相径庭。 任务要求我们添加几个简单的监控指标,比如应用是否正常运行、运行时长、数据处理是否足够迅速等。由于项目正处于维护模式,已经有段时间没有添加新功能了。按理说,添加这些指标对我们来说应该是小菜一碟...
- 下一篇
OpenAI 前 CTO 官宣新创业 AI 公司,团队成员多来自 OpenAI
OpenAI 前 CTO Mira Murati 今天凌晨宣布创立了新的 AI 公司 Thinking Machines Lab(思维机器实验室)。 官网写道,公司将专注于构建人工智能(AI)模型和产品,以支持更多、跨工作领域的“人类-AI协作”,“虽然当前的系统擅长编程和数学,但我们正在构建能够适应人类所有专业知识并实现更广泛应用的人工智能。” 他们还强调这会是一家重视研究开放的公司,其推文中承诺: 我们致力于通过论文发表和代码发布来开放科学,同时会重点关注应用于不同领域的人机协作。我们的方法包括共同设计研究和产品,以便从实际部署和快速迭代中学习。这项工作需要三个核心基础:SOTA 的模型智能、高质量的基础设施和先进的多模态能力。我们致力于构建处于能力领先的模型来兑现这一承诺。 该公司官方网站对这三核心基础进行了展开说明: 模型智能是基石。除了强调人机协作和定制之外,模型智能也至关重要,我们正为科学和编程等领域构建前沿能力模型。最终,最先进的模型将解锁最具变革性的应用和优势,例如实现新颖的科学发现和工程突破。 基础设施质量是重中之重。研究生产力至关重要,在很大程度上取决于基础设施的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题