0

我现在在 phpmyadmin 中,我正在尝试设置一个字段来标记插入数据时的当前日期。

现在我尝试将其设置为DATETIME类型,但这包括时间。我只想约会。我还尝试将其设置为DATETIME默认值GETDATE()并保存,但它引发了错误:

#1067 - Invalid default value for 'upload_date' 

请问有人知道怎么做吗?

4

2 回答 2

5

不幸的是,您不能将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()

于 2012-09-12T11:23:28.477 回答
0

一个常见的错误,我只是把文档扔给你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 列。

于 2012-09-12T11:25:50.547 回答