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