timestamp存在binlog里面的是uniox时间戳 利用binlog恢复数据的时候会恢复成时间戳。。无法对应到具体的年月日
timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’;
datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’
CURRENT_TIMESTAMP为什么能用于datetime类型
在mysql 5.6之前的版本,CURRENT_TIMESTAMP只能用于timestamp类型,
5.6版本之后,CURRENT_TIMESTAMP也能用于datetime类型了
select version()查数据库版本
所以5.6以后的版本也可以用下面的建表语句:
`CREATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`UPDATE_TIME` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
insert into tablename 的时候 1.CREATE_TIME字段要加上,值value对应的不能为空 2.CREATE_TIME字段不加,则数据库默认会用CURRENT_TIMESTAMP(当前时间);同理update也一样,要么无视这个字段,要么设置这个字段,否则会出现不期望的效果
所以,datetime要更实用一点(除了占用的存储空间,DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节)