首页 >数据库 >mysql教程 >为什么 CURRENT_DATE/CURDATE() 不能作为 MySQL DATE 列的默认值?

为什么 CURRENT_DATE/CURDATE() 不能作为 MySQL DATE 列的默认值?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-20 02:53:09431浏览

Why Doesn't CURRENT_DATE/CURDATE() Work as a Default Value for MySQL DATE Columns?

CURRENT_DATE/CURDATE() 的默认日期值问题

在 MySQL 世界中,您可能会遇到一个看似简单的问题:为什么' t CURRENT_DATE 或 CURDATE() 作为 DATE 的默认值

谜语:为什么它不起作用?

正如您所期望的,此代码应该可以正常工作:

CREATE TABLE INVOICE(
   INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE
)

然而,令我们惊讶的是,事实并非如此。这个难题背后的原因是什么?

答案:MySQL 限制

答案在于 MySQL 内部的限制。尽管很直观,但不支持将 DATE 列的默认值设置为 CURRENT_DATE 或 CURDATE()。

根据 MySQL 文档,默认值必须是常量而不是函数或表达式。这消除了使用这些函数动态设置默认日期的可能性。

例外:CURRENT_TIMESTAMP

此规则的例外是 CURRENT_TIMESTAMP。可以将此函数设置为 TIMESTAMP 列的默认值。但是,需要注意的是,它代表当前时刻,而不是特定日期。

更新: 在 MySQL 8.0.13 中,出现了重大变化。现在支持 CURRENT_DATE 和 CURDATE() 作为 DATE 列的默认值。此更新解决了本文中讨论的限制。

以上是为什么 CURRENT_DATE/CURDATE() 不能作为 MySQL DATE 列的默认值?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn