储存时间,常用的有三个选择datetime、timestamp、int。
插入效率:datetime > timestamp > int
读取效率:int > timestamp > datetime
储存空间:datetime > timestamp = int
datetime
datetime 占用8字节,是占用空间最多的一种日期格式。它显示日期,同时也显示时间。5.5及以前的版本不支持微妙级别,任何微妙数值都会被截断之后存入数据库。
timestamp
timestamp 与 datetime 显示的结果是一样的,不同的是timestamp 占用4个字节。它的显示范围是:1970-01-01 00:00:01 至 2038-01-19 01:14:07(UTC),UTC 协调世界时间,世界统一时间。
timestamp 与 datetime显示的格式一样,但是显示的范围不同,还有以下一些区别
建表时, 列为timestamp的类型可以设置一个默认值,datetime 不行。
更新表时,可以设置timestamp 类型的列自动更新时间为当前时间。
int
从上面两个类型的缺点看来,貌似这个类型可以解决以上的问题,其实我们只要存格林时间的unix timestamp就好了,时区时间的计算上也很方便,读取的效率也不错。我觉得用这个储存的缺点呢,就是直接select的时候时间不能直观的显示出来。
其他开源程序discuz, typecho, emlog等等等等,他们都选用int了,这一定有他们的道理。