mysql中的TIMESTAMP类型引发的sql语句执行错误

今天同学问了我一个奇怪的问题,他说他的sql语句导入不了,去看了一下原来是mysql中TIMESTAMP类型在5.5和5.6中发生了变化.


下面是官方的一些引用

5.5是这么紫说的

DATETIME或TIMESTAMP 值可以包括高达微秒(6位)精度的尾随小数秒部分。尽管识别了该小数部分,但是从存储在DATETIME或TIMESTAMP 列中的值中丢弃它 。有关MySQL 中小数秒支持的信息,请参见第11.3.6节“时间值中的小数秒”。无效的DATE,, DATETIME或 TIMESTAMP值将转换为适当类型(或)的 “ 零 ”值。 '0000-00-00''0000-00-00 00:00:00'


5.6.4以上是这么紫说的

DATETIME或TIMESTAMP 值可以包括高达微秒(6位)精度的尾随小数秒部分。特别是,从MySQL 5.6.4开始, 存储而不是丢弃插入到一个DATETIME或一TIMESTAMP列中的值中的任何小数部分 。与包括分数部分,这些值的格式'YYYY-MM-DD HH:MM:SS[.fraction]',对于范围 DATETIME的值是'1000-01-01 00:00:00.000000'到'9999-12-31 23:59:59.999999',而对于范围 TIMESTAMP的值是'1970-01-01 00:00:01.000000'到'2038-01-19 03:14:07.999999'。小数部分应始终与其余时间分开一个小数点; 没有识别其他小数秒分隔符。


这里要注意啦:所以5.5以前的版本和5.6.4以上的在dump   sql语句的时候会在TIMESTAMP中会有区别,5.5以前的是timestamp,而5.6.4以上的是timestamp(0)后面有跟时间戳的......

所以5.6.4以上版本的mysql   dump下来的语句中如果有timestamp类型在5.5以前的mysql中执行是会报错的.所以要协商好mysql版本的一致性........

关键的时候去看看官方文档还是有很大收货的......

你可能感兴趣的:(mysql中的TIMESTAMP类型引发的sql语句执行错误)