十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
把字段的类型设置为 timestamp 类型,每次添加数据时不用手动添加,自动设为当前时间
创新互联建站主营博罗网站建设的网络公司,主营网站建设方案,app软件开发公司,博罗h5微信小程序定制开发搭建,博罗网站营销推广欢迎博罗等地区企业咨询
-- 方法一:
由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的。代替的方案是使用TIMESTAMP类型代替DATETIME类型。
TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
1.列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
2.列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
3.你明确地设定TIMESTAMP列为NULL.
4.除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
所以把日期类型 选择成timestamp 允许空就可以了
CREATE TABLE test (
uname varchar(50) NOT NULL,
updatetime timestamp NULL DEFAULTCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果要在navicat下操作的话,将字段设置为timestamp,然后默认值写上CURRENT_TIMESTAMP即可
MySQL 里面.
默认值, 不允许使用 函数
下面是 例子
mysql CREATE TABLE test_wang (
- ID INT,
- date1 VARCHAR(20),
- date2 VARCHAR(20)
- );
Query OK, 0 rows affected (0.01 sec)
-- 对列插入 随机数. 确认 数据是可以存储的.
mysql insert into test_wang values (1, rand(), rand());
Query OK, 1 row affected (0.00 sec)
mysql select * from test_wang;
+------+-------------------+-------------------+
| ID | date1 | date2 |
+------+-------------------+-------------------+
| 1 | 0.770875269333716 | 0.351427750989262 |
+------+-------------------+-------------------+
1 row in set (0.00 sec)
-- 这里尝试 设置 列 默认值 为 随机数, 结果失败了.
mysql ALTER TABLE test_wang
- MODIFY COLUMN date1
- VARCHAR(20)
- DEFAULT RAND() ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near 'RAND()' at line 4
-- 设置默认值 为 固定值, 是成功的.
mysql ALTER TABLE test_wang
- MODIFY COLUMN date1
- VARCHAR(20)
- DEFAULT '123' ;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE test_wang;
-- 如果是 日期的话, 尝试使用 TIMESTAMP 数据类型
-- 来实现这个功能.
mysql CREATE TABLE test_wang (
- id INT UNSIGNED AUTO_INCREMENT,
- date1 TIMESTAMP,
- date2 TIMESTAMP,
- PRIMARY KEY(id)
- );
Query OK, 0 rows affected (0.02 sec)
mysql insert into test_wang(date1) VALUES (null);
Query OK, 1 row affected (0.00 sec)
mysql select * from test_wang;
+----+---------------------+---------------------+
| id | date1 | date2 |
+----+---------------------+---------------------+
| 1 | 2011-10-12 11:30:26 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+
1 row in set (0.00 sec)
如果是日期字符串类型就是~
CREATE TABLE 表名
(
time datetime NOT NULL DEFAULT NOW(),
...
)
如果是时间戳~
CREATE TABLE 表名
(
time int NOT NULL DEFAULT CURRENT_TIMESTAMP(),