大家
我想添加一个start_date列,其默认值是当前日期(),所以我使用以下命令:
更改表验证添加列start_date日期默认值CURDATE()
但它没有用,告诉我它有语法错误。
使用以下命令效果很好:
alter table validation add column start_date date default 0
任何建议都表示赞赏。
答案 0 :(得分:10)
来自online documentation(我的大胆):
数据类型规范中的
DEFAULT
value子句指示列的默认值。除了一个例外,默认值必须为常量;它不能是一种功能或表达。这意味着,例如,您不能将日期列的默认值设置为NOW()或CURRENT_DATE等函数的值。
例外情况是您可以将CURRENT_TIMESTAMP指定为TIMESTAMP列的默认值。
这就是为什么default 0
有效(常数),但default curdate()
没有(一个函数)。
你(至少)有几种可能来解决这个问题。
第一种方法是使用时间戳列而不是日期列,并将其默认值设置为CURRENT_TIMESTAMP
。不幸的是,这意味着你必须将它转回到提取它的日期。
第二种方法是使用触发器来设置列值,而不是使用默认值。例如,使用插入触发器将相关列设置为当前日期。
答案 1 :(得分:0)
数据类型规范中的DEFAULT值子句表示a 列的默认值。除了一个例外,默认值必须 是一个常数;它不能是一种功能或表达。
答案 2 :(得分:0)
您是否尝试过SYSDATE()。
Select SYSDATE();
这将以这种格式提供:2011-09-29 16:11:39