日期算是我们在日常开发中经常用到的数据类型,一般来说一张表都有 createTime 和 updateTime 字段,MySQL 中针对日期也提供了很多种不同的数据类型,如:
-
datetime
-
timestamp
-
int
等等。甚至也有人直接将日期存为字符串的。
那么到底该用哪种类型来保存日期呢?
1. 字符串
在这些类型中,首先应该排除掉的就是字符串了,很多新手小伙伴爱用字符串存储日期,但实际上这并不是一个很好的方案。
使用字符串存储日期,第一个显而易见的问题就是无法使用 MySQL 中提供的日期函数,这会为很多查询带来不便。
例如用户表中有一个字段 birthday,表示用户的生日,现在想要查询 2001 出生的所有用户,如果 birthday 是 日期类型,就可以使用 YEAR 函数,但是如果 birthday 是字符串类型,这个问题就不太好处理了。
使用字符串存储日期的第二个问题就是占用空间较大,例如存储如下时间:
2021-01-01 00:00:00
-
如果使用字符串,需要 19 个字节。
-
如果使用 datetime 需要 8 个字节。
-
如果使用 timestamp 需要 4 个字节。
所以首先排除掉字符串。