mysql 建表时设置默认当前时间
我有多个字段需要设置默认时间,类型为varchar,date1VARCHARdefaultnow(),date2VARCHARdefaultnow(),.....这样不行...
我有多个字段需要设置默认时间,类型为varchar,
date1 VARCHAR default now(),
date2 VARCHAR default now(),
.....
这样不行,是怎么回事呢? 展开
date1 VARCHAR default now(),
date2 VARCHAR default now(),
.....
这样不行,是怎么回事呢? 展开
3个回答
展开全部
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)
默认值, 不允许使用 函数
下面是 例子
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)
追问
用TIMESTAMP的话,只能得到一个时间,该怎么办呢?
还有,如果用TIMESTAMP的话,每次修改记录的时候,这个时间都会改变,我们的需求不是这样的!
追答
mysql> insert into test_wang(date1) VALUES (null);
Query OK, 1 row affected (0.00 sec)
上面的例子, 你没看明白么?
插入的时候, 传入参数为 null
那么 存储的数据, 是
2011-10-12 11:30:26
包含 年月日 时分秒
但是假如你没有指定列名的话, 例如前面的那个 date2 列
那么这列就没有数据。
也就是
0000-00-00 00:00:00
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
date1 VARCHAR default CURRENT_TIMESTAMP,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-05-10
展开全部
mysql中默认值可以用函数,
例如:
CREATE TABLE IF NOT EXISTS results
(examDate TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '考试时间'
)COMMENT='成绩表';
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询