设计数据库表的同时,其实要考虑的事情有很多,需要根据字段的业务数据特征来选择不同的数据类型。
比如现在就来说一个关于时间数据类型的选型问题。
首先来看mysql中一共有着三种关于时间的数据类型,分别是date、datetime、timestamp,那这三种有什么区别呢?
date,如:2021-09-27,只有日期,没有时间。
datetime,如2021-09-27 10:09:01,时间格式固定为yyyy-mm-dd hh:mm:ss,精确到秒。
timestamp,如2021-09-27 10:09:01 UTC,timestamp会将插入的时间转换为UTC世界标准时间进行存储,查询时再将其转换成当前时区进行展示。
基本上date没有什么特别的,就只是日期,如果不需要具体时间,完全可以直接用date数据类型。
如果要使用具体时间的话,就要在datetime和timestamp中进行选择了。
datetime和timestamp还有一个很大的区别,那就是时间的范围问题。
datetime的时间范围是'1000-01-01 00:00:00.000000'
to '9999-12-31 23:59:59.999999'
。
而timestamp的时间范围是 '1970-01-01 00:00:01.000000'
to '2038-01-19 03:14:07.999999'
。
datetime的范围要大于timestamp的时间范围,这个是针对数据类型的选择有决定性的作用的。
那么我现在是要放置一个数据生成的时间戳,我则是选择了datetime数据类型,其实只要知道了其中的区别,问题就迎刃而解了。