首頁 >資料庫 >mysql教程 >為什麼 CURRENT_DATE/CURDATE() 不能作為 MySQL DATE 欄位的預設值?

為什麼 CURRENT_DATE/CURDATE() 不能作為 MySQL DATE 欄位的預設值?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-20 02:53:09434瀏覽

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