嗨,我正在学习 SQL,同时我找到了下面的任务,
在现有表中插入一个新列 StartDate,对于现有记录,应具有 sysdate,对于新条目,应具有明天的日期。
直到现在我做到了
ALTER TABLE test
ADD StartDate DATETIME NOT NULL DEFAULT (GETDATE());
从这里我无法前进,我认为任务本身不正确,我的想法是否正确,或者我们可以执行这项任务,请任何人帮助我。
首先阅读肖恩关于使专栏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()));
试试这个:
ADD StartDate2 DATETIME NOT NULL DEFAULT (DATEADD(DAY, 1,GETDATE()));