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中文網其他相關文章!