TIMESTAMP 类型仅仅是为了兼容 SQL 标准,因此,不建议使用者在实际的项目
应用场景使用此数据类型,推荐使用 DATETIME 数据类型。
TIMESTAMP 的格式为“YYYY-MM-DD HH:MI:SS”,支持的范围是“1970-01-01
08:00:01”到“2038-01-01 00:59:59”。
gbase> CREATE TABLE t (a int,b timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP, c timestamp DEFAULT '2013-01-01 00:00:01');
Query OK, 0 rows affected
gbase> SHOW CREATE TABLE t;
+-------+----------------------------------------------------------------+
| Table | Create Table |
+-------+----------------------------------------------------------------+
| t | CREATE TABLE "t" (
"a" int(11) DEFAULT NULL,
"b" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
"c" timestamp NOT NULL DEFAULT '2013-01-01 00:00:01'
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+-------+----------------------------------------------------------------+
1 row in set
TIMESTAMP 使用限制
以下限制说明,是针对 TIMESTAMP 数据列自动更新时的场景:
使用 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP属性后,TIMESTAMP 列在支持 INSERT、UPDATE 以及 MERGE 时,它的值自动更新。需要注意的是 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在一张表中只能给第一个 TIMESTAMP 列使用一次,也就是含有多个 TIMESTAMP 列时,只能给第一次出现 TIMESTAMP 列使用
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 属性。
创建一张表时,如果只定义一个 TIMESTAMP 列,则 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 可以省略,系统会自动添加上。
从不同节点发起的 SQL语句,TIMESTAMP列更新的时间为发起节点的本地时间;
如果从不同的发起点发起 SQL,而各个节点的本地时间又不同步,则无法保证
TIMESTAMP 列更新值一致。