T-SQL在现有表中添加新列,并从另一个现有列填充值

时间:2015-09-16 11:25:15

标签: sql sql-server

我有一个表test,其中包含以下列:idstartDatestopDatestartOvertimestopOvertime

startDatestopDate的日期时间类型为startOvertimestopOvertime的类型为time(7)

我想创建一个新列,其中包含stopDate的日期部分和startOvertime的时间部分,并将其复制到新创建的列test-fill中。

如果我使用公式(stopDate,startOvertime),则新的datetime列的值不正确。有什么建议吗?

3 个答案:

答案 0 :(得分:7)

如果您始终希望新列包含此信息,则可以使用计算列:

alter table test add test-fill as
    (cast(cast(startDate as date) as datetime) + cast(overtime as datetime));

这实际上并没有添加新列。它只是在您需要时计算值。

答案 1 :(得分:2)

这应该这样做:

alter table [table-name] add [test-fill] datetime

update [table-name]
set [test-fill] = cast(startDate as date) + cast(stopOvertime as datetime)

首先我们向表中添加列,然后我们用数据更新创建的单元格。

答案 2 :(得分:0)

ALTER TABLE TEST ADD NEWCOL DATETIME;
UPDATE TEST
SET NEWCOL = CAST((CAST(CAST(stopDate as date) as varchar(10))+' '+CAST(CAST(startOvertime as time) as varchar(10))) as DATETIME);