嗨,我在学习下面的任务时正在学习SQL,
在现有表中插入新列StartDate,对于现有记录应具有sysdate,对于新条目应具有明天的日期。
直到现在我做到了
ALTER TABLE test
ADD StartDate DATETIME NOT NULL DEFAULT (GETDATE());
从这里我无法前进,我认为任务本身是不正确的,我认为是正确的,还是我们可以执行此任务,请有人帮助我。
答案 0 :(得分:2)
首先阅读肖恩(Sean)关于制作NULLABLE
列的评论。然后,将命令更改为:
默认值应为dateadd(day,1,getdate())
。对于将来的插入,如果您没有在插入上指定值,这将起作用。
ALTER TABLE test
ADD StartDate DATETIME NULL DEFAULT (DATEADD(DAY,1,GETDATE()));
对于其他行,只需更改此表即可更新。
update table test
set StartDate = getdate()
where StartDate is null --which is every row that wasn't inserted after the change
然后,更改列以使其NOT NULL
ALTER TABLE test
ALTER COLUMN StartDate DATETIME NOT NULL DEFAULT (DATEADD(DAY,1,GETDATE()));
答案 1 :(得分:0)
尝试一下:
ADD StartDate2 DATETIME NOT NULL DEFAULT (DATEADD(DAY, 1,GETDATE()));