偶尝试着按如下命令修改原数据表中设为null的字段,无法实现,提示出错!
alter table tablename modify columnname date default curdate();
请赐教!
5 个解决方案
#1
MySQL目前不支持 Default 为函数,
如达到你要的功能,
你可以使用
TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
列没有明确地在一个UPDATE语句中指定且一些另外的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
你明确地设定TIMESTAMP列为NULL.
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
如达到你要的功能,
你可以使用
TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
列没有明确地在一个UPDATE语句中指定且一些另外的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
你明确地设定TIMESTAMP列为NULL.
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
#2
没看明白.
是否是只要把列类型设置为TIMESTAMP,就可以了?
MySQL目前不支持 Default 为函数,怎么又可以将列设为NOW()?
糊涂了~~~麻烦犬犬再说的清楚些.
是否是只要把列类型设置为TIMESTAMP,就可以了?
MySQL目前不支持 Default 为函数,怎么又可以将列设为NOW()?
糊涂了~~~麻烦犬犬再说的清楚些.
#3
OK
自动更新第一个TIMESTAMP列在下列任何条件下发生:
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
如果你的表中有两个以上的TIMESTAMP列,在进行更新时,只有第一个TIMESTAMP列的列值会更新为最新的时间,而其它的TIMESTAMP列列值是不会发生发改变的,
如果我们想将其它的TIMESTAMP列的列值也设为最新的时间怎么办呢
呵呵,只要在更新时将列的值设为NULL 或 NOW();
CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (14), 'date2' TIMESTAMP (14), PRIMARY KEY('id'));
INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL)
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114093723 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2 WHERE id=1;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2,date1=date1,date2=NOW() WHERE id=2;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114094320 |
+----+----------------+----------------+
自动更新第一个TIMESTAMP列在下列任何条件下发生:
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
如果你的表中有两个以上的TIMESTAMP列,在进行更新时,只有第一个TIMESTAMP列的列值会更新为最新的时间,而其它的TIMESTAMP列列值是不会发生发改变的,
如果我们想将其它的TIMESTAMP列的列值也设为最新的时间怎么办呢
呵呵,只要在更新时将列的值设为NULL 或 NOW();
CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (14), 'date2' TIMESTAMP (14), PRIMARY KEY('id'));
INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL)
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114093723 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2 WHERE id=1;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2,date1=date1,date2=NOW() WHERE id=2;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114094320 |
+----+----------------+----------------+
#4
SELECT id,DATE_FORMAT(date1,'%Y-%m-%d %H:%i:%s') As date1,DATE_FORMAT(date2,'%Y-%m-%d %H:%i:%s') As date2 FROM test;
+----+---------------------+---------------------+
| id | date1 | date2 |
+----+---------------------+---------------------+
| 2 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 |
+----+---------------------+---------------------+
+----+---------------------+---------------------+
| id | date1 | date2 |
+----+---------------------+---------------------+
| 2 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 |
+----+---------------------+---------------------+
#5
明白了,多谢犬犬!
#1
MySQL目前不支持 Default 为函数,
如达到你要的功能,
你可以使用
TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
列没有明确地在一个UPDATE语句中指定且一些另外的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
你明确地设定TIMESTAMP列为NULL.
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
如达到你要的功能,
你可以使用
TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。
自动更新第一个TIMESTAMP列在下列任何条件下发生:
列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。
列没有明确地在一个UPDATE语句中指定且一些另外的列改变值。(注意一个UPDATE设置一个列为它已经有的值,这将不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)
你明确地设定TIMESTAMP列为NULL.
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
#2
没看明白.
是否是只要把列类型设置为TIMESTAMP,就可以了?
MySQL目前不支持 Default 为函数,怎么又可以将列设为NOW()?
糊涂了~~~麻烦犬犬再说的清楚些.
是否是只要把列类型设置为TIMESTAMP,就可以了?
MySQL目前不支持 Default 为函数,怎么又可以将列设为NOW()?
糊涂了~~~麻烦犬犬再说的清楚些.
#3
OK
自动更新第一个TIMESTAMP列在下列任何条件下发生:
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
如果你的表中有两个以上的TIMESTAMP列,在进行更新时,只有第一个TIMESTAMP列的列值会更新为最新的时间,而其它的TIMESTAMP列列值是不会发生发改变的,
如果我们想将其它的TIMESTAMP列的列值也设为最新的时间怎么办呢
呵呵,只要在更新时将列的值设为NULL 或 NOW();
CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (14), 'date2' TIMESTAMP (14), PRIMARY KEY('id'));
INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL)
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114093723 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2 WHERE id=1;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2,date1=date1,date2=NOW() WHERE id=2;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114094320 |
+----+----------------+----------------+
自动更新第一个TIMESTAMP列在下列任何条件下发生:
除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列设为NULL,或NOW()。
如果你的表中有两个以上的TIMESTAMP列,在进行更新时,只有第一个TIMESTAMP列的列值会更新为最新的时间,而其它的TIMESTAMP列列值是不会发生发改变的,
如果我们想将其它的TIMESTAMP列的列值也设为最新的时间怎么办呢
呵呵,只要在更新时将列的值设为NULL 或 NOW();
CREATE TABLE test ('id' INT (3) UNSIGNED AUTO_INCREMENT, 'date1' TIMESTAMP (14), 'date2' TIMESTAMP (14), PRIMARY KEY('id'));
INSERT INTO test (id, date1, date2) VALUES (1, NULL, NULL)
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114093723 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2 WHERE id=1;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114093723 |
+----+----------------+----------------+
UPDATE test SET id= 2,date1=date1,date2=NOW() WHERE id=2;
+----+----------------+----------------+
| id | date1 | date2 |
+----+----------------+----------------+
| 2 | 20021114094009 | 20021114094320 |
+----+----------------+----------------+
#4
SELECT id,DATE_FORMAT(date1,'%Y-%m-%d %H:%i:%s') As date1,DATE_FORMAT(date2,'%Y-%m-%d %H:%i:%s') As date2 FROM test;
+----+---------------------+---------------------+
| id | date1 | date2 |
+----+---------------------+---------------------+
| 2 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 |
+----+---------------------+---------------------+
+----+---------------------+---------------------+
| id | date1 | date2 |
+----+---------------------+---------------------+
| 2 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 |
+----+---------------------+---------------------+
#5
明白了,多谢犬犬!