如何将列的默认值设置为今天的日期? [复制]

Posted

技术标签:

【中文标题】如何将列的默认值设置为今天的日期? [复制]【英文标题】:How do I set the default value of a column to today's date? [duplicate] 【发布时间】:2017-11-26 01:47:42 【问题描述】:

我目前正在做一个小项目,我需要将一些数据插入到数据库表中。我想要做的是将某个列的默认值设置为今天的日期,但只设置为今天的日期

这甚至可能吗?我已经尝试过数据类型 DATETIMETIME 及其函数 CURRENT_TIMESTAMP()TIMESTAMP() 来设置它们的值.问题是我希望在我的列中今天的日期,而不是日期和时间。有谁知道这是否可能?

这里是一个例子:

CREATE TABLE IF NOT EXISTS Bestellung(
BestellNr MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
Bestelldatum DATE DEFAULT ??? NOT NULL,
FahrerID TINYINT UNSIGNED NOT NULL,
KundenNr SMALLINT UNSIGNED NOT NULL,
FOREIGN KEY(FahrerID) REFERENCES
Fahrer(FahrerID) ON UPDATE CASCADE,
FOREIGN KEY(KundenNr) REFERENCES
Kunde(KundenNr) ON UPDATE CASCADE,
PRIMARY KEY(BestellNr),
INDEX(Bestelldatum)
) 

【问题讨论】:

您不能设置DATE 列的默认值。见dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html @Barmar:哇,多么愚蠢的限制。 @dnoeth MySQL 有很多愚蠢的限制,比如不能在查询中两次引用同一个临时表,不允许视图中的子查询,不允许在 @987654325 中使用的子查询中使用 LIMIT @. @dnoeth 直到最近,一个表中的TIMESTAMP 列不能超过一个默认值。 你运行的是什么版本的 MySQL/MariaDB? 【参考方案1】:

在 MySL 中,您可以使用函数 CURDATE() 仅将日期返回为 YYYY-MM-DD。

参考:https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html

【讨论】:

不能在CREATE TABLEDEFAULT选项中使用 MariaDB 10.2.1 允许DEFAULT(expression)。见Create table。

以上是关于如何将列的默认值设置为今天的日期? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我可以将列的默认值设置为同一表中同一行上另一列的字符串吗?

如何将今天设置为我的日期选择器默认值?

MySQL - 如何修改列默认值?

如何使用 XML 在 SQL 中将列默认值设置为今天的日期

HSQLDB - 为啥我不能将默认值设置为 -1

如何设置像'YYYYMM'这样的Postgresql默认值日期戳?