如何将列的默认值设置为今天的日期? [复制]
Posted
技术标签:
【中文标题】如何将列的默认值设置为今天的日期? [复制]【英文标题】:How do I set the default value of a column to today's date? [duplicate] 【发布时间】:2017-11-26 01:47:42 【问题描述】:我目前正在做一个小项目,我需要将一些数据插入到数据库表中。我想要做的是将某个列的默认值设置为今天的日期,但只设置为今天的日期。
这甚至可能吗?我已经尝试过数据类型 DATETIME 和 TIME 及其函数 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 TABLE
的DEFAULT
选项中使用
MariaDB 10.2.1 允许DEFAULT(expression)
。见Create table。以上是关于如何将列的默认值设置为今天的日期? [复制]的主要内容,如果未能解决你的问题,请参考以下文章