Mysql 如何把已存在的记录的timestamp改为有值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql 如何把已存在的记录的timestamp改为有值?相关的知识,希望对你有一定的参考价值。

如图,inserttime 和 updatetime 是后加上去的,第一列没有默认值。后续新增的记录是有默认当前时间 default current_stamp的。如何做到不修改第一条记录的内容,而让这两个时间有值呢?update student set sname=sname where sid=1;貌似不行

参考技术A 直接写update语句用NOW()
update student set inserttime = NOW(), updatetime = NOW() where sid=1;

mysql如何让时间属性不自动更新

我的数据表中有一个timestamp属性字段,默认值是current_timestamp,这里有个弊端就是每次更新如果不给这个字段传入值,那么它是null,数据库会自动更新当前的时间,由于这个时间字段我是记录以前的信息,每次更新时间都在变,那么问题就大了,我想请教知友们... 我的数据表中有一个timestamp属性字段,默认值是current_timestamp,这里有个弊端就是每次更新如果不给这个字段传入值,那么它是null,数据库会自动更新当前的时间,由于这个时间字段我是记录以前的信息,每次更新时间都在变,那么问题就大了,我想请教知友们,我该如何设置才能使不传入时间,更新也不会改变当前的字段值? 展开 问题解决了,找了这么久关键字总算让我不再这范围的关键字文章中找到了。 其实我上面理解错了自动更新不是因为current_timestamp的存在,后面还要加上on update current 这句是更新的关键,所以我取消了这一句在数据库中只让默认值为current_timestamp这样就不会更新了

参考技术A 既然楼主已经解决了,
我就顺便粘贴点
测试的
sql
代码上来吧
首先是
插入

更新,
都会修改
TIMESTAMP
的情况:
create
table
testB
(
id
int
PRIMARY
KEY,
val
varchar(10),
dt
TIMESTAMP
);
INSERT
INTO
testB(id,
val)
VALUES(1,
'A');
INSERT
INTO
testB(id,
val)
VALUES(2,
'B');
SELECT
*
FROM
testB;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
A
|
2013-03-21
14:24:20
|
|
2
|
B
|
2013-03-21
14:24:21
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
UPDATE
testB
SET
val
=
'C'
WHERE
id
=
1;
SELECT
*
FROM
testB;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
C
|
2013-03-21
14:28:02
|
|
2
|
B
|
2013-03-21
14:24:21
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
然后是
仅仅插入时设置,
修改时不更新的情况
假如仅仅需要
插入时记录时间,
更新的时候不需要,
那么需要修改表定义方式:
TIMESTAMP
not
null
default
CURRENT_TIMESTAMP
create
table
testC
(
id
int
PRIMARY
KEY,
val
varchar(10),
dt
TIMESTAMP
not
null
default
CURRENT_TIMESTAMP
);
INSERT
INTO
testC(id,
val)
VALUES(1,
'A');
INSERT
INTO
testC(id,
val)
VALUES(2,
'B');
SELECT
*
FROM
testC;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
A
|
2013-03-21
14:35:12
|
|
2
|
B
|
2013-03-21
14:35:13
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)
UPDATE
testC
SET
val
=
'CC'
WHERE
id
=
1;
SELECT
*
FROM
testC;
+----+------+---------------------+
|
id
|
val
|
dt
|
+----+------+---------------------+
|
1
|
CC
|
2013-03-21
14:35:12
|
|
2
|
B
|
2013-03-21
14:35:13
|
+----+------+---------------------+
2
rows
in
set
(0.00
sec)

以上是关于Mysql 如何把已存在的记录的timestamp改为有值?的主要内容,如果未能解决你的问题,请参考以下文章

mysql workbench如何把已有的数据库导出ER模型

mysql如何让时间属性不自动更新

mysql之TIMESTAMP(时间戳)用法详解

mybatis mysql怎么比较两个timestamp的时间

mysql 数据类型TIMESTAMP

MySQL中DATETIMEDATE和TIMESTAMP类型的区别