MySQL 中 TIMESTAMP 和 DATETIME 的区别
TIMESTAMP
- TIMESTAMP 列必须有默认值,默认值可以为 “0000-00-00 00:00:00”,但不能为 null。
- TIMESTAMP 列不可以设置值,只能由数据库自动去修改。
- 一个表可以存在多个 TIMESTAMP 列,但只有一个列会根据数据更新而改变为数据库系统当前值。因此,一个表中有多个 TIMESTAMP 列是没有意义,实际上一个表只设定一个 TIMESTAMP 列。
- TIMESTAMP 列的默认值是CURRENT_TIMESTAMP常量值。当纪录数据发生变化的时候,TIMESTAMP 列会自动将其值设定为CURRENT_TIMESTAMP。
- TIMESTAMP 列创建后的格式是:
`a` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
这个语句含义,a 字段的默认值是 CURRENT_TIMESTAMP,当纪录更新时候,自动将 a 字段的值设置为 CURRENT_TIMESTAMP。
6. 另外,下面的定义从语法角度是对的,但是没有意义,因为该字段的值不可更改,永远只能为默认值。
`b` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00'
DATETIME
- DATETIME 列可以设置为多个,默认可为null,可以手动设置其值。
- DATETIME 列不可设定默认值。
- DATETIME 列可以变相的设定默认值,比如通过触发器、或者在插入数据时候,将 DATETIME 字段值设置为 now(),这样可以做到了,尤其是后者,在程序开发中常常用到。
总结
- DATETIME 类型适合用来记录数据的原始创建时间,因为无论怎么更改记录中其他字段的值,DATETIME 字段的值都不会改变,除非你手动更改它。
- TIMESTAMP 类型适合用来记录数据的最后修改时间,只要更改了记录中其他字段的值,TIMESTAMP 字段的值都会被自动更新。
Q.E.D.
Comments | 0 条评论