mysql 建表时设置默认当前时间

我有多个字段需要设置默认时间,类型为varchar,date1VARCHARdefaultnow(),date2VARCHARdefaultnow(),.....这样不行... 我有多个字段需要设置默认时间,类型为varchar,
date1 VARCHAR default now(),
date2 VARCHAR default now(),
.....
这样不行,是怎么回事呢?
展开
 我来答
wangzhiqing999
2011-10-12 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3339万
展开全部
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)
追问
用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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
q2369582jhwe
2011-10-12 · TA获得超过364个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:176万
展开全部
date1 VARCHAR default CURRENT_TIMESTAMP,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-05-10
展开全部
mysql中默认值可以用函数,
例如:
CREATE TABLE IF NOT EXISTS results
(examDate TIMESTAMP NOT NULL DEFAULT NOW() COMMENT '考试时间'
)COMMENT='成绩表';
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式