如何更改表以添加具有当前日期默认值的新列日期?

Posted

技术标签:

【中文标题】如何更改表以添加具有当前日期默认值的新列日期?【英文标题】:how to alter table to add new column date with default value of current date? 【发布时间】:2016-03-06 03:34:33 【问题描述】:

我对改变感到困惑。

我有一个现有的表register,我想添加一个this_date 列,其默认值为当前日期。可以通过改变吗?好吧,它已经有数据了。

【问题讨论】:

是的,可以使用 Alter Table 添加一列。你遇到了什么问题? 【参考方案1】:

应该没问题的。

ALTER TABLE ADD COLUMN this_date DATE DEFAULT CURRENT_DATE;

只要新列可以为空和/或具有默认值,就应该没有问题。

【讨论】:

【参考方案2】:

这对我来说在 mysql 5.7 上是不可能的。每次都给我一个错误。 我可以使用DATETIME 字段和NOW() 作为默认值,但不能使用CURRENT_DATE

【讨论】:

【参考方案3】:

在 MySQL 5.7 上,我没有找到默认使用 CURRENT_DATE 或其同义词的方法。

如果您的应用程序将始终在 INSERT 语句中提供值,并且您只需要一种向现有数据添加非空列然后为现有行设置值的方法,您可以通过为非空行提供固定默认值来解决此问题-null 日期列

ALTER TABLE MyTable ADD COLUMN MyColumn DATE DEFAULT '2020-01-01'

然后将其更新为 CURRENT_DATE

UPDATE MyTable SET MyColumn = CURRENT_DATE 

【讨论】:

欢迎来到 SO。默认值的想法是在创建行时应用; when 当然与CURRENT_DATE 绝对相关!如果应用了您的 UPDATE 解决方案,例如在行创建时应用的触发器中。因此,如果您能以这种方式对其进行改进,它可能会变得更加有用。 AntoineL,你当然是对的。我做了对我有用的假设,但在其他地方却不行。我会更新我的答案...【参考方案4】:

你也可以选择将列放在哪里,在后面使用关键字:

ALTER TABLE MyTable ADD `MyColumn` DATETIME AFTER `LastColumn`

【讨论】:

【参考方案5】:
ALTER TABLE "TableName" ADD "New_Column_Name" TIMESTAMP DEFAULT now();

【讨论】:

以上是关于如何更改表以添加具有当前日期默认值的新列日期?的主要内容,如果未能解决你的问题,请参考以下文章

如何将具有值的新列添加到现有数据表?

如何使用scala数据框添加具有以下行值的新列[重复]

在 SQL 中加入表后,通过从当前日期中减去日期列来创建新列

Clickhouse - 添加一个新列,默认值基于另一列

在SQL中添加包含当前时间的新列

使用 ifelse 添加具有条件值的新列