这更像是一个思考问题。 我一直在研究不同的时间/日期格式,我注意到似乎最好将日期/时间对象作为变量存储在数据库中的唯一类(如ISOdate或POSIXct)(如Mongo,MySQL,postegen)。
我明白为什么在分析数据时会想要转换为这样的格式,但我想知道当我以数据形式将其存储在数据库中时有什么优势?
这些格式是否比传统数字占用更少的空间? 我似乎无法在网上找到答案。
答案 0 :(得分:1)
为了论证,我们只谈一个简单的date
类型(只是日期,没有时间或时区) - 例如MySQL中的DATE
类型。
假设我们存储了一串2014-12-31
。一天之后会怎么样?作为一个人,很容易得出答案2015-01-01
,但计算机需要编写这些算法。
虽然这些类型可能会暴露具有处理日历数学的算法的API,但它们很可能会将信息存储为自某个开始日期以来的整数天(称为" epoch&#34 )。因此,2014-12-31
实际上存储为16701
之类的内容。计算机可以非常有效地添加1以在第二天获得16702
。
这也使得排序更容易。当然,以YYYY-MM-DD
格式,字典排序顺序被保留,但它仍然需要更多的处理能力来排序字符串而不是整数。此外,当表示为字符串时,日期可能会格式化为其他文化,例如MM/DD/YYYY
或DD/MM/YYYY
格式,不按字典顺序排序。如果您通过数千个日期进入表,然后使用WHERE
或ORDER BY
子句进行查询,则数据库需要能够有效地对值进行排序,整数排序比分析字符串要快得多。 / p>
是的 - 它们往往也会减少物理存储空间。
当日期和时间都存在时,同样的原则适用,你还必须与时间值的精确度(秒,毫秒,纳秒等)竞争。