时间字段的选择

 关于一些人的选择 
 
  1. datetime
  2. timestamp
  3. int(10)
  4. bigint(13)
  5. 还有人选择用char来存储时间 - -#


时间区间的差别
  1. datetime            时间区间(0000年到9999年)
  2. timestamp          时间区间(1970到2038-01-19 11:14:07)
  3. int(10)                其实就是timestamp的数字版,使用  
                             unix_timestamp 和 from_unixtime 这俩函数进行转换
  4. bigint(13)           精确到毫秒的时间撮
                             Java中也就是 System.currentTimeMillis() ,使用的时候 需要自行转换
  5. char                   char(13),与上面这一条类似

其他方面:

插入效率:datetime > timestamp > int
读取效率:int > timestamp > datetime
储存空间:datetime > timestamp = int 

1.存储类型,char的本质是定长字符串,datetime表现是时间类型,本质是int.
  精度要求相同时,char占用的空间更大.

2.char可以存储时间的长度和精度可以完全由程序决定,datetime则由数据库本身决定. 

3.作为索引的查询性能,datetime的存储类型更短,而且为int类型辨识度更高,在where或join时可以有更好的性能。 所以,datetime更节约空间,有更好的查询性能,如果datetime的长度或精度不满足需求,建议存储bigint类型的时间戳,没有必要将时间类型存为char。

参考:
http://www.zhihu.com/question/27097981/answer/35539215

你可能感兴趣的:(时间字段的选择)