CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间,使用mysql 的当前时间。html
参考地址:http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.htmlmysql
datetime 和 timestamp 都是保存时间格式为 YYYY-MM-DD HH:MM:SS 一共10多个字符,sql
datetime 保存的时间范围较大,年的数字在:1000---9999之间数据库
timestamp 保存的时间较小,年的数字在:1970 --2037 之间设计
mysql中用于表示时间的三种类型date, datetime, timestamp (若是算上int的话,四种) 比较容易混淆,下面就比较一下这三种类型的异同htm
相同点对象
均可以用于表示时间
都呈字符串显示blog
不一样点字符串
1.顾名思义,date只表示'YYYY-MM-DD'形式的日期,datetime表示'YYYY-MM-DD HH:mm:ss'形式的日期加时间,timestamp与datetime显示形式同样。
2.date和datetime可表示的时间范围为'1000-01-01'到'9999-12-31',timestamp因为受32位int型的限制,能表示'1970-01-01 00:00:01'到'2038-01-19 03:14:07'的UTC时间。
3.mysql在存储timestamp类型时会将时间转为UTC时间,而后读取的时候再恢复成当前时区。 假如你存储了一个timestamp类型的值以后,修改了mysql的时区,当你再读取这个值时就会获得一个错误的时间。而这种状况在date和datetime中不会发生。
4.timestamp类型提供了自动更新的功能,你只须要将它的默认值设置为CURRENT_TIMESTAMP。
5.除了date是保留到天,datetime和timestamp都保留到秒,而忽略毫秒。get
时间格式
mysql提供了一种比较宽松的时间字符串格式用于增删改查。参考iso时间格式,通常习惯于写成'2013-06-05 16:34:18'。可是你也能够简写成'13-6-5',可是这样容易形成混淆,好比mysql也会把'13:6:5'也当作年月日处理,而当'13:16:5'这种形式,则被mysql认为是不正确的格式,会给出一个警告,而后存入数据库的值是'0000-00-00 00:00:00'。
手册中还特地提到了一种状况,就是当年的值是0~69时,mysql认为是2000~2069,而70~99时则认为是1970~1999。我感受是一种多此一举了。
总之,以不变应万变,使用'YYYY-MM-DD HH:mm:ss'格式老是不会错的。
所以仍是 使用 datetime 吧看起来
datetime
1. 占用8个字节2. 容许为空值,能够自定义值,系统不会自动修改其值。3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)5. 不能够设定默认值,因此在不容许为空值的状况下,必须手动指定datetime字段的值才能够成功插入数据。6. 能够在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。结论:datetime类型适合用来记录数据的原始的建立时间,由于不管你怎么更改记录中其余字段的值,datetime字段的值都不会改变,除非你手动更改它。 timestamp1. 占用4个字节2. 容许为空值,可是不能够自定义值,因此为空值时没有任何意义。3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,若是分配给这样一个对象将被转换为0。4.值以UTC格式保存( it stores the number of milliseconds)5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。7. 数据库会自动修改其值,因此在插入记录时不须要指定timestamp字段的名称和timestamp字段的值,你只须要在设计表的时候添加一个timestamp字段便可,插入后该字段的值会自动变为当前系统时间。8. 之后任什么时候间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
结论:timestamp类型适合用来记录数据的最后修改时间,由于只要你更改了记录中其余字段的值,timestamp字段的值都会被自动更新。
前提是 timestamp 要设置默认值为 : CURRENT_TIMESTAMP 当那条数据被修改好 ,那么时间自动变为当前的时间