Mysql 时间戳列始终获取零值

Mysql 时间戳列始终获取零值,mysql,Mysql,我使用以下查询将默认值设置为列: ALTER TABLE tableName ADD COLUMN testDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 但是我在新插入的行中看到testDate列的0000-00-00:00:00 我想看看它的当前日期和时间 有人能解释为什么会发生这种情况吗?数据,您在插入查询中指定,覆盖列的默认值,即如果没有为列设置数据,则默认值有效 请参阅my。只有在查询中未定义值时,默认值才起作用 这将使用测试的默

我使用以下查询将默认值设置为列:

ALTER TABLE tableName ADD COLUMN testDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
但是我在新插入的行中看到testDate列的
0000-00-00:00:00

我想看看它的当前日期和时间


有人能解释为什么会发生这种情况吗?

数据,您在
插入
查询中指定,覆盖列的默认值,即如果没有为列设置数据,则默认值有效


请参阅my。

只有在查询中未定义值时,默认值才起作用

这将使用测试的默认值:

INSERT INTO mytable(userid, email) VALUES(42, 'info@example.org');
虽然这将覆盖test的默认值:

INSERT INTO mytable(userid,email,test/*here is when it goes wrong, you shouldn't mention the column in your insert statement at all*/) VALUES(42,'bush@example.did','2001-09-11 00:00:00');

你能试着检查一下现在()是否应该能够完成你的挑战?此外,这仅在插入查询中未指定新行的值时设置新行的值。@ThisNameBetterBeAvailable这是我发布的查询,它不起作用。我们可以看到您的插入查询吗?@CreativeCreator我现在也尝试过()了。您应该在insert语句中排除testDate,因为默认值在没有为列设置数据的情况下起作用它是新列数据的名称,所以您在INSERT查询中指定了覆盖列的默认值,即,如果没有为列设置数据,默认值起作用。很抱歉,我没有得到您的答案,您能用工作表编辑您的答案吗query@john.p.doe,您只需从INSERT查询中排除testDate,或设置testDate=NOW()。两者都有效。