我现在在 phpmyadmin 中,我正在尝试设置一个字段来标记插入数据时的当前日期。
现在我尝试将其设置为DATETIME
类型,但这包括时间。我只想约会。我还尝试将其设置为DATETIME
默认值GETDATE()
并保存,但它引发了错误:
#1067 - Invalid default value for 'upload_date'
请问有人知道怎么做吗?
我现在在 phpmyadmin 中,我正在尝试设置一个字段来标记插入数据时的当前日期。
现在我尝试将其设置为DATETIME
类型,但这包括时间。我只想约会。我还尝试将其设置为DATETIME
默认值GETDATE()
并保存,但它引发了错误:
#1067 - Invalid default value for 'upload_date'
请问有人知道怎么做吗?
不幸的是,您不能将DEFAULT
值设置为函数,它必须是一个常量值。一个例外是CURRENT_TIMESTAMP
,尽管它也将包括以下time
部分:
column_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP
但是,您可以使用 aTRIGGER
来设置列的默认值。例如:
CREATE TRIGGER trigger_name BEFORE INSERT ON your_table
FOR EACH ROW SET NEW.date_column = DATE(NOW());
此外,用于DATE()
截断TIME
.NOW()
一个常见的错误,我只是把文档扔给你http://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
数据类型规范中的 DEFAULT value 子句指示列的默认值。除了一个例外,默认值必须是一个常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为 NOW() 或 CURRENT_DATE 等函数的值。例外情况是您可以将 CURRENT_TIMESTAMP 指定为 TIMESTAMP 列的默认值。请参见第 11.1.5.5 节,“TIMESTAMP 的自动初始化和更新”。
文档中还有使用 current_timestamp 的例外情况 - 这要求您的列是 TIMESTAMP 列。