我有一个表test
,其中包含以下列:id
,startDate
,stopDate
,startOvertime
,stopOvertime
。
startDate
和stopDate
的日期时间类型为startOvertime
,stopOvertime
的类型为time(7)
。
我想创建一个新列,其中包含stopDate
的日期部分和startOvertime
的时间部分,并将其复制到新创建的列test-fill
中。
如果我使用公式(stopDate,startOvertime),则新的datetime列的值不正确。有什么建议吗?
答案 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);