在编程语言和数据库中存储日期和时间的不同结构如何工作?

How do different structures for storing date and time in programming languages and databases work?

鉴于语言和数据库使用不同的结构来存储日期和时间,当将日期和时间值从编程语言移动到数据库时,哪段代码负责转换日期和时间数据结构,反之亦然?

大多数系统将 DATETIME 存储为浮点数。小数点左边的值是从第零 (0) 天算起的天数。零日可以是任何事情。在 Unix 中,第 0 天是 1/1/1970。 Unix诞生的年份。然而,这对普通用户来说不是很直观。 Oracle 使用实际年份 0,SQL 服务器使用 1/1/1900。

将数字 0 转换为 DATETIME,您将获得该系统第 0 天。

小数点右边的数字是时间。这可以以毫秒、微秒为单位记录,无论您的系统可以处理的粒度如何。

此方法最好的部分是日期数学变得非常简单。将数字转换为实际日期和时间是非常复杂的。

大多数编程语言都会遵循同样的模式。