TIMESTAMP和DATETIME的表示方法非常类似,区别主要有以下几点。
1、TIMESTAMP支持的时间范围比较小,其取值范围从19700101080001到2038年的某个时间,而DATETIME是从1000-01-01 00:00:00 到 9999-12-31 23:59:59,范围更大。
2、表中的第一个TIMESTAMP列自动设置为系统时间。如果在一个TIMESTAMP列中插入NULL,则该列值将自动设置为当前的日期和时间。在插入或更新一行但不明确给TIMESTAMP列赋值时也会自动设置该列的值为当前的日期和时间,当插入的值超出取值范围时,MySQL认为该值溢出,使用”0000-00-00 00:00:00”进行填补。
3、TIMESTAMP的插入和查询都受当地时区的影响,更能反应出实际的日期。而DATETIME则只能反应出插入时当地的时区,其他时区的人查看数据必然会有误差的。
4、TIMESTAMP的属性受MySQL版本和服务器SQLMode的影响很大。