2011-08-11 60 views
2

是否可以用NOW()添加默认时间,10分钟?MySQL日期时间默认时间间隔

我已经试过类似的东西:

CREATE TABLE `table1` (
    `date` DATETIME NOT NULL DEFAULT DATE_ADD(NOW(), INTERVAL 10 MINUTE) 
); 

但是,这是行不通的。

回答

4

我不认为你可以做到这一点。

MySQL Documentation指出:

在数据类型规范的默认值子句表示为列一个 默认值。有一个例外,默认值必须是 是一个常数;它不能是一个函数或表达式。这意味着,例如, ,例如,您不能将日期列的默认值设置为 函数的值,例如NOW()或CURRENT_DATE。唯一的例外是 您可以指定CURRENT_TIMESTAMP为默认的 TIMESTAMP列

2

但是你可以使用一个插入触发器来实现这一目标。设置默认为 '日期' 栏为空,并用

CREATE TRIGGER settime 
BEFORE INSERT on table1 
FOR EACH ROW BEGIN 
    IF new.`date` is null THEN 
     SET new.`date` = DATE_ADD(NOW(), INTERVAL 10 MINUTE); 
    END IF; 
END; 
+0

它显示了我的错误在第5行:** SET new.'date' = DATE_ADD(NOW(),间隔10分钟); ** (#1064 - 你的SQL语法有错误;查看与你的MySQL服务器版本相对应的手册,在第5行使用“''')。 – loop

+0

我在Mysql 5.1上测试过它 - 你有什么版本?此外,您需要更改表以允许空值,并将缺省值设置为空。 – Inca

+0

我已经将默认值设置为NULL并允许空值。版本是 - 5.5.13。 – loop