mysql中datetime和timestamp

区别

date和datetime,timestamp的区别

  1. date保存的是天,精确到天
  2. datetime,timestamp精确到秒

datetime和timastamp

  datetime 和timestamp两者都是时间类型字段,格式都一致。

  1. 受时区影响不同

    timestamp会跟随设置的时区变化而变化,而datetime保存的是绝对值不会变化。

  2. 占用存储空间不同

    timestamp储存占用4个字节,datetime储存占用8个字节。

  3. 可以表示的时间范围不同

    timestamp可表示范围:1970-01-01 00:00:00~2038-01-09 03:14:07,datetime支持的范围更宽1000-01-01 00:00:00 ~ 9999-12-31 23:59:59。

  4. 索引速度不同

    timestamp更轻量,索引相对datetime更快。

  5. 默认值不同

    datetime的默认值为null,timestamp的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。

  6. 存储方式不同

    两者的存储方式不一样,对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于datetime,不做任何改变,基本上是原样输入和输出。

  在mysql5.6之前的版本,CURRENT_TIMESTAMP只能用于timestamp类型,5.6版本之后,CURRENT_TIMESTAMP也能用于datetime类型了。