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中文网其他相关文章!