我有两种选择,可以在我的数据库中存储日期和时间。
生成时间&从PHP中的时间函数开始,然后在数据库中存储到4字节的int数据类型。
生成时间&在数据库中插入到8字节的datetime数据类型期间的日期。
我的问题是,如果我使用日期和时间列进行排序,哪种类型会使我的SQL查询更快。
答案 0 :(得分:2)
我总是讨厌在包含int
格式的人类不可读日期和时间值的数据库上构建查询。
如果您使用int
,也许查询速度会快一秒,但它真的值得吗?我说不!
答案 1 :(得分:2)
使用TIMESTAMP
数据类型。它存储为数字,但返回格式化。因此,排序速度更快,更易于阅读。
答案 2 :(得分:0)
最好使用数据库的本机格式来存储日期时间。
我几乎看不到你想要为此目的使用另一种二进制格式的场合。这将使数据库的该组件基本上无法用于其他访问方法。
至于人类可读性,您可以通过让视图访问表(在其他数据库中可以定义具有计算列的表)来解决该问题,这些表以人类可读的格式提供日期。此外,了解数据库的工具应以人类可读的格式生成输出。
除非您拥有非常大的数据库或处于非常严格的约束环境中,否则请不要担心存储问题。您可能没有考虑在允许列为NULL时存储的额外位,或者当字段在硬件字边界上没有对齐时可能在字段之间存在的额外填充,或者数据页上的空白空间因为记录没有在页面边界上对齐。
如果空间是如此重要的考虑因素,那么您可能需要开发自己的日期/时间格式,以查看是否可以将其缩小到2或3个字节。