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/YYYY
或 DD/MM/YYYY
格式,这些格式按字典顺序 not 排序 [=39] =].如果你通过数千个日期到一个 table 然后用 WHERE
或 ORDER BY
子句查询,数据库需要能够有效地对值进行排序,而整数排序比分析字符串。
是的 - 它们往往占用更少的物理存储空间 space。
同样的原则适用于同时存在日期和时间的情况,您还必须应对时间值的精度(秒、毫秒、纳秒等)
这更像是一个思考题。 我一直在研究不同的 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/YYYY
或 DD/MM/YYYY
格式,这些格式按字典顺序 not 排序 [=39] =].如果你通过数千个日期到一个 table 然后用 WHERE
或 ORDER BY
子句查询,数据库需要能够有效地对值进行排序,而整数排序比分析字符串。
是的 - 它们往往占用更少的物理存储空间 space。
同样的原则适用于同时存在日期和时间的情况,您还必须应对时间值的精度(秒、毫秒、纳秒等)