数据类型
表示方式 3:YYYYMMDDHHMMSS 或 YYMMDDHHMMSS。
例如:
插入 20140122090123 或者 140122090123,
插入数据库中的都为 2014-01-22 09:01:23。
表示方式 4:使用 NOW()来输入当前系统的日期和时间。
TIMESTAMP(时间戳)类型:表示日期和时间。
显示形式与 DATETIME 相同,但取值范围比 DATETIME 小。
使用 CURRENT_TIMESTAMP 来输入系统当前日期和时间。
无任何输入,或输入 NULL 时,实际保存的是系统当前日期和时间。
在 MySQL 中,TIMESTAMP 字段默认会自动设置如下属性:
NOT NULL DEFAULT CURRENTTIMESTAMP ON UPDATE CURRENTTIMESTAMP
NOT NULL 表示非空约束,该字段将不允许保存 NULL 值。
DEFAULT 表示默认约束,当字段无任何输入时,自动设置指定值作为默认值。
DEFAULT CURRENT_TIMESTAMP 表示使用系统当前日期和时间作为默认值。
在 MySQL 中,TIMESTAMP 字段默认会自动设置如下属性:
NOT NULL DEFAULT CURRENTTIMESTAMP ON UPDATE CURRENTTIMESTAMP
ON UPDATE 用于当一条记录中的其他字段被 UPDATE 语句修改时,自动更改该字段为某个值。
ON UPDATE CURRENT_TIMESTAMP 表示每次修改时保存修改时的系统日期和时间。
若手动设置 DEFAULT,将不会自动设置 ON UPDATE 属性:
CREATE TABLE my_timestamp (
t1 TIMESTAMP,
t2 TIMESTAMP DEFAULT CURRENTTIMESTAMP ON UPDATE CURRENTTIMESTAMP,
t3 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
mysql> DESC my_timestamp;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+-------------------+-----------------------------+
| t1 | timestamp | NO | | CURRENTTIMESTAMP | on update CURRENTTIMESTAMP |
| t2 | timestamp | NO | | CURRENTTIMESTAMP | on update CURRENTTIMESTAMP |
| t3 | timestamp | NO | | CURRENT_TIMESTAMP | |
+-------+-----------+------+-----+-------------------+-----------------------------+
3 rows in set (0.00 sec)
t1 和 t2 的设置结果相同,t3 没有设置 ON UPDATE 属性
若使用 MySQL 5.6 之前的版本,my_timestamp 表会创建失败。
MySQL 5.6 之前的版本在一张表中只允许一个字段使用 CURRENT_TIMESTAMP 作为 DEFAULT 和 ON UPDATE 的值。
此时可以分成多张表进行测试。
CREATE TABLE mytimestamp1 (
t1 TIMESTAMP
);
CREATE TABLE mytimestamp2 (
t2 TIMESTAMP DEFAULT CURRENTTIMESTAMP ON UPDATE CURRENTTIMESTAMP,
);
CREATE TABLE mytimestamp3 (
t3 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
常用的字符串类型:CHAR 和 VARCHAR。
区别:VARCHAR 可以存储可变长度的字符串。
CHAR(M) 或 VARCHAR(M)
M:字符串的最大长度
回见
版权声明: 本文为 InfoQ 作者【在即】的原创文章。
原文链接:【http://xie.infoq.cn/article/ef48ee44622426c596be85e56】。文章转载请联系作者。
评论