相同点:TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。
不同点: datetime 以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59'TIMESTAMP值不能早于1970或晚于2037。
timestamp 以4个字节储存,值以UTC格式保存,受时区影响,存储时对当前的时区进行转换,检索时再转换回当前的时区。
datetime 8个字节储存,以实际格式保存,与时区无关。
CREATE TABLE `test_timestamp` (
`ww` VARCHAR( 9 ) NOT NULL,
#c1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
#c2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
#c3 TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP,
c4 TIMESTAMP DEFAULT 0
) ENGINE = INNODB
分别对c1,c2,c3,c4列进行insert和update操作(因为不能同时创建两列timestamp),c1会在insert和update时都更新当前时间,如图
列 | insert | update |
---|---|---|
c1 | 更新 | 更新 |
c2 | 更新 | 不更新 |
c3 | 不更新,默认为0000-00-00 | 更新 |
c4 | 不更新,默认为0000-00-00 | 不更新 |