当前位置: 首页 > 知识库问答 >
问题:

使用默认值NOW()为新行添加时间戳列

阳俊德
2023-03-14

我有一张有数千行的桌子。由于表最初不是在列处使用created_构造的,因此无法获取它们的创建时间戳。不过,开始获取未来行的时间戳是至关重要的。

有没有一种方法可以添加一个带有默认值NOW()的timestamp列,这样它就不会将值填充到以前的行中,而只填充到将来的行中?

如果我执行ALTER查询,它将用时间戳填充所有行:

ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()

共有3个答案

李云
2023-03-14

例如,我将创建一个名为users的表,如下所示,并为名为date的列提供一个默认值NOW()

create table users_parent (
    user_id     varchar(50),
    full_name   varchar(240),
    login_id_1  varchar(50),
    date        timestamp NOT NULL DEFAULT NOW()
);

谢谢

窦国源
2023-03-14

您可以添加缺省规则与改变表,

ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()

然后立即设置为null所有当前存在的行:

UPDATE mytable SET created_at = NULL

然后从这一点开始,默认值将生效。

狄兴邦
2023-03-14

您需要添加默认为null的列,然后将该列更改为默认为now()

ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
 类似资料:
  • 错误1067(42000):“updated”的默认值无效 我想这是因为的精度只有秒。 如何将当前时间设置为具有小数部分的的默认值?

  • 我的mysql版本是5.5.41-0Ubuntu0.14.04.1(Ubuntu)

  • 我希望使用Laravel模式构建器/迁移在UPDATE CURRENT_TIMESTAMP上创建一个时间戳列,其默认值为

  • 本文向大家介绍在MySQL中添加具有当前时间的新列作为默认值?,包括了在MySQL中添加具有当前时间的新列作为默认值?的使用技巧和注意事项,需要的朋友参考一下 为此,可以在MySQL中使用DEFAULT CURRENT_TIMESTAMP子句。以下是语法- 让我们首先创建一个表- 现在您可以使用insert命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果

  • 问题内容: 我正在寻找将列添加到默认值为0的MySQL数据库的语法 参考 问题答案: 尝试这个: 从链接到的文档中: 要在页面下方查找搜索语法,请执行以下操作: column_definition子句对ADD和CHANGE使用与CREATE TABLE相同的语法。请参见第12.1.17节“创建表语法”。 并从链接页面: 注意那里的DEFAULT这个词。

  • 问题内容: 我需要在CURRENT_DATE()列上使用默认值创建mysql表 我尝试 但它写一个错误 问题是什么? 我只需要唯一日期而不需要全职信息… 你能帮助我吗? 问题答案: 使用 CURRENT_TIMESTAMP 函数而不是 CURRENT_DATE() 函数 试试这个: