最近我在设计数据表时需要一个存放时间的字段,在timestamp、int(10)和datetime几种类型中犹豫不决,它们都能满足我的业务需求,因此我不知道它们几个哪个更好。下面我就我整理出来的资料记录一下笔记。
- timestamp
timestamp类型的取值范围为“1970-01-01 00:00:00” 至 “2038-01-19 03:14:07”,其数据精确到秒,4个字节,其时间值带时区,可精确到微秒级别,timestamp(N)的取值范围为0-6,精确到毫秒则设置为timestamp(3),精确到微秒则设置为timestamp(6)。
- int(10)
就是一个时间戳,4个字节,精确到秒。
- datetime
datetime类型的取值范围为1000-01-01 00:00:00~9999-12-31 23:59:59,存储需要8个字节,与时区无关,精确度为百分之三秒。
我自己总结一下这几个类型的优缺点:
①timestamp存储空间小、精确度高、适用数据库相关的时间函数、数据表可视化,但是时间范围快到期了,且由于自带时区转义,如果是跨多个时区的业务需要检查好自身的时间时区转换。
②int(10)存储空间小、运算及查询效率高、不受时区影响,但是可视化不友好,需要转义才能看时间,且精确度不高,只能到秒级别。
③datetime,时间范围大、对程序员友好,可视化友好,可适用数据库相关的时间函数。但存储空间大。
以上就是我的总结。
参考 https://blog.csdn.net/xumingjie1658/article/details/7426301、https://www.cnblogs.com/deityjian/p/11452295.html、https://blog.csdn.net/fsp88927/article/details/80662369