如何将DATE列默认为今天的日期

时间:2014-11-27 13:49:32

标签: mysql sql

我需要一个DATE列来默认为当前而不是时间戳

我需要它像2014-11-27

CHANGE COLUMN `date` `date` DATE NULL DEFAULT TODAY() 

mysql不接受上述内容,因为TODAY()未知。 DATE(),DATE,CURDATE()和CURDATE也不起作用

2 个答案:

答案 0 :(得分:1)

在这种情况下你需要使用TRIGGER,DEFAULT子句只能处理常量值:

DELIMITER //
CREATE TRIGGER today BEFORE INSERT ON table
FOR EACH ROW
BEGIN
  IF NEW.`date` IS NULL THEN
    SET NEW.`date` = NOW(); 
  END IF;
END;
//
DELIMITER ;

答案 1 :(得分:1)

DEFAULT值必须是常量,不能是函数或表达式。这在documentation中说明。

当列的类型为TIMESTAMP时,只有一个例外。如果列适合您的设计,请将列的类型更改为TIMESTAMP(也请阅读initialized and updated)或使用TRIGGER解决方案。