字段: 表timestamp字段
timestamp字段属性
1、属性介绍
CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段不会改变。
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段将会改变,即时间变为了更新时候的时间。
2、修改字段属性值
show create table tbl_ledgerrecord;
alter table tbl_ledgerrecord change intoStorageDate intoStorageDate timestamp DEFAULT CURRENT_TIMESTAMP;
TIMESTAMP设置默认值的几个应用实例
1、创建表 dj1,b列有个属性ON UPDATE CURRENT_TIMESTAMP,导致更新数据时,即便未涉及到该列,该列数据也被自动更新。c列为零值,新插入数据时依然是零值不会改变。
CREATE TABLE `dj1` (
`a` char(1) COLLATE utf8_bin DEFAULT NULL,
`b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
UNIQUE KEY `dj1_idx_u1` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
mysql> select * from dj1;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 7 | 2019-05-06 10:42:05 | 0000-00-00 00:00:00 |
| 4 | 2019-05-06 10:42:30 | 0000-00-00 00:00:00 |
| 1 | 2019-05-06 11:02:33 | 0000-00-00 00:00:00 |
+------+---------------------+---------------------+
3 rows in set (0.00 sec)
mysql> update dj1 set a=8 where a=7;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from dj1;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 4 | 2019-05-06 10:42:30 | 0000-00-00 00:00:00 |
| 1 | 2019-05-06 11:02:33 | 0000-00-00 00:00:00 |
| 8 | 2019-05-06 11:07:42 | 0000-00-00 00:00:00 |
+------+---------------------+---------------------+
3 rows in set (0.00 sec)
2、创建表 dj2,b 列 c 列不带属性.不带属性默认创建就是这样。
CREATE TABLE `dj2` (
`a` char(1) DEFAULT NULL,
`b` timestamp NULL DEFAULT NULL,
`c` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
mysql> select * from dj2;
+------+------+------+
| a | b | c |
+------+------+------+
| 1 | NULL | NULL |
| 2 | NULL | NULL |
| 1 | NULL | NULL |
+------+------+------+
3 rows in set (0.00 sec)
3、创建表 dj3,b列默认值为CURRENT_TIMESTAMP不带自动更新属性,c列为零值,测试可用
CREATE TABLE `dj3` (
`a` char(1) COLLATE utf8_bin DEFAULT NULL,
`b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`c` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
UNIQUE KEY `dj1_idx_u1` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
mysql> select * from dj3;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 4 | 2019-05-06 10:41:10 | 0000-00-00 00:00:00 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> update dj3 set a=5 where a=4;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from dj3;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 5 | 2019-05-06 10:41:10 | 0000-00-00 00:00:00 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
4、创建表 dj4,b列默认值为CURRENT_TIMESTAMP,c列默认值为CURRENT_TIMESTAMP带自动更新属性,测试可用。
CREATE TABLE `dj4` (
`a` char(1) COLLATE utf8_bin DEFAULT NULL,
`b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `dj1_idx_u1` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
mysql> select * from dj4;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 2 | 2019-05-06 10:49:17 | 2019-05-06 10:49:22 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> update dj4 set a=4 where a=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from dj4;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 4 | 2019-05-06 10:49:17 | 2019-05-06 11:12:09 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
5、创建表dj5,b列默认值为CURRENT_TIMESTAMP,c列默认值为'0000-00-00 00:00:00'带自动更新属性,测试后可以使用。
CREATE TABLE `dj5` (
`a` CHAR(1) COLLATE utf8_bin DEFAULT NULL,
`b` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`c` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY `dj1_idx_u1` (`b`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
mysql> select * from dj5;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 2 | 2019-05-06 10:51:18 | 2019-05-06 10:51:25 |
| 3 | 2019-05-06 11:12:58 | 0000-00-00 00:00:00 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
mysql> update dj5 set a=4 where a=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from dj5;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 2 | 2019-05-06 10:51:18 | 2019-05-06 10:51:25 |
| 4 | 2019-05-06 11:12:58 | 2019-05-06 11:13:31 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
6、创建表dj6,b列默认值为CURRENT_TIMESTAMP带自动更新属性,c列默认值为CURRENT_TIMESTAMP,测试可用。
CREATE TABLE `dj6` (
`a` char(1) COLLATE utf8_bin DEFAULT NULL,
`b` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ,
UNIQUE KEY `dj1_idx_u1` (`b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
mysql> select * from dj6;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 1 | 2019-05-06 11:14:16 | 2019-05-06 11:14:16 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
mysql> update dj6 set a=2 where a=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from dj6;
+------+---------------------+---------------------+
| a | b | c |
+------+---------------------+---------------------+
| 2 | 2019-05-06 11:15:17 | 2019-05-06 11:14:16 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
Last updated
Was this helpful?