没有所谓的 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,09...
