Title:[转]MySQL 中你应该使用什么数据类型表示时间?Create:2018-09-04 ◊ :718

:2018-09-04 15:50
: TabKey9  :0  :0  


当你需要保存日期时间数据时,一个问题来了:你应该使用 MySQL 中的什么类型?使用 MySQL 原生的 DATE 类型还是使用 INT 字段把日期和时间保存为一个纯数字呢?

  本篇文章只转载结论,相关基准测试请查看原文:MySQL 中你应该使用什么数据类型表示时间?

  

结论

基于这些数据,我确信 Datetime 是大多数场景下的最佳选择。原因是:

  • 更快(根据我们的三个基准测试)。

  • 无需任何转换即是人类可读的。

  • 不会因为时区变换产生问题。

  • 只比它的对手们多用 1 字节

  • 支持更大的日期范围(从 1000 年到 9999 年)

如果你只是存储 Unix 时间戳(并且在它的合法日期范围内),而且你真的不打算在它上面使用任何基于日期的查询,我觉得使用 INT 是可以的。我们已经看到,它执行简单数值比较查询时非常快,因为只是在处理简单的数字。

Timestamp 怎么样呢?如果 Datetime 相对于 Timestamp 的优势不适用于你特殊的场景,你最好使用时间戳。阅读这篇文章后,你对三种类型间的区别应该有了更好的理解,可以根据你的需要做出最佳的选择。