这更像是一个思考的问题。我一直在研究不同的时间/日期格式,并且我注意到它似乎更倾向于将日期/时间对象存储为具有独特类(如ISOdate或POSIXct)的变量在数据库中(如Mongo、MySQL、postegen)。
我明白为什么在分析数据时会想要转换成这样的格式,但我想知道,当我以这种格式存储在数据库中时,有什么好处呢?
这些格式是否比传统的数字占用更少的空间?我似乎在网上找不到答案。
发布于 2015-05-30 01:21:43
为了参数起见,让我们只讨论一个简单的date类型(只是日期,而不是时间或时区)--比如MySQL中的DATE类型。
假设我们存储了一个2014-12-31字符串。一天后是什么?作为一个人,很容易想出答案2015-01-01,但计算机需要编程这些算法。
虽然这些类型可能公开具有处理日历数学算法的API,但它们最有可能将信息存储为某个开始日期(称为“纪元”)之后的全部天数。因此,2014-12-31实际上存储为类似于16701的东西。计算机可以非常有效地添加1,以获得第二天的16702。
这也使得分类变得容易多了。当然,在YYYY-MM-DD格式中,字典排序顺序是保留的,但是排序字符串的处理能力仍然比整数要大得多。此外,当将日期表示为字符串时,可能会对其他区域性进行格式化,例如MM/DD/YYYY或DD/MM/YYYY格式,它们不是按字典顺序排序的。如果在表中遍历数千个日期,然后使用WHERE或ORDER BY子句进行查询,则数据库需要能够有效地对值进行排序,整数排序比分析字符串要快得多。
是的--它们通常占用的物理存储空间也要少得多。
当日期和时间同时存在时,同样的原则也适用,而且您还必须处理时间值的精度(秒、毫秒、纳秒等等)。
https://stackoverflow.com/questions/30538320
复制相似问题