我正在设置一个数据库,并想记录每个条目是何时添加的,仅日期。
ALTER TABLE form ADD COLUMN created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP我正在使用上面的代码,但它也存储了我不想要的时间。有一个单独的日期选项,但我不知道如何让它像上面那样自动输入。
有人碰巧知道这个查询吗?我试过了:
ALTER TABLE form ADD COLUMN created DATE NOT NULL DEFAULT CURDATE但它不喜欢这样,我也没有找到任何其他的命令来尝试。
发布于 2014-05-29 03:11:49
不,只有CURRENT_TIMESTAMP可以工作。也就是说,您可以使用DATE函数轻松地提取此列的日期部分:
SELECT
DATE(created) as created_date
FROM
form;这里是MySQL manual的相关部分
DEFAULT子句指定列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为NOW()或CURRENT_DATE等函数的值。例外情况是,您可以将CURRENT_TIMESTAMP指定为时间戳或(从MySQL 5.6.5开始) DATETIME列的缺省值。
发布于 2014-05-29 03:21:44
如果考虑到触发器,则此触发器应该可以:
CREATE trigger def_date before INSERT ON form
FOR each
ROW SET NEW.date = CURDATE( ) 发布于 2014-05-29 03:12:55
由于您不能将函数/表达式用作default,所以第二个ALTER语句不起作用。来自MySQL documentation CREATE TABLE
DEFAULT子句指定列的默认值。除了一个例外,默认值必须是常量;它不能是函数或表达式。例如,这意味着您不能将日期列的默认值设置为NOW()或CURRENT_DATE等函数的值。例外情况是,您可以将CURRENT_TIMESTAMP指定为时间戳列的缺省值
因此,从本质上讲,您只能使用CURRENT_TIMESTAMP作为默认设置。
https://stackoverflow.com/questions/23919583
复制相似问题