ISOdate/POSIXct 与毫秒

ISOdate/POSIXct vs Milliseconds

这更像是一个思考题。 我一直在研究不同的 time/date 格式,我注意到似乎更喜欢将 date/time 对象存储为具有唯一 类 的变量(如 ISOdate 或 POSIXct)在数据库中(如 Mongo, MySQL, postegen).

我明白为什么人们在分析数据时会想要转换成这种格式,但我想知道当我将它以这种格式存储在数据库中时有什么优势?

这些格式是否往往 space 比传统数字少? 我似乎无法在网上找到答案。

为了争论,我们只讨论一个简单的 date 类型(只有日期,没有时间或时区)——例如 MySQL.[=22 中的 DATE 类型=]

假设我们存储了一个 2014-12-31 的字符串。一天后是什么?作为人类,很容易得出答案 2015-01-01,但计算机需要将这些算法编入程序。

虽然这些类型可能公开具有处理日历数学算法的 API,但在幕后,它们很可能将信息存储为自某个开始日期(称为 "epoch" ).所以 2014-12-31 实际上存储为 16701 之类的东西。计算机可以非常高效地加 1 以获得第二天的 16702

这也使得排序变得更加容易。当然,在 YYYY-MM-DD 格式中,字典排序顺序被保留,但与整数排序相比,它仍然需要更多的处理能力来排序字符串。此外,当日期表示为字符串时,可能会针对其他文化设置格式,例如 MM/DD/YYYYDD/MM/YYYY 格式,这些格式按字典顺序 not 排序 [=39] =].如果你通过数千个日期到一个 table 然后用 WHEREORDER BY 子句查询,数据库需要能够有效地对值进行排序,而整数排序比分析字符串。

是的 - 它们往往占用更少的物理存储空间 space。

同样的原则适用于同时存在日期和时间的情况,您还必须应对时间值的精度(秒、毫秒、纳秒等)