2015-09-16 35 views
3

添加新列和填充值我有一個表test有以下的列:idstartDatestopDatestartOvertimestopOvertimeT-SQL在現有的表從兩個另一現有列

startDatestopDate是datetime類型和startOvertime,stopOvertimetime(7)類型。

我想創建一個新的列,其日期部分從stopDate和時間部分從startOvertime複製到一個新創建的列test-fill

如果我使用公式(stopDate,startOvertime),那麼新的日期時間列的值是不正確的。任何建議?

回答

6

如果你總是希望這個信息的新列,那麼你可以使用一個計算列:

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

這實際上並沒有添加新列。它只是在你需要它們時計算這些值。

2

這應做到:

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

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

首先,我們添加列的表,然後我們更新創建細胞的數據。

+0

爲什麼使用'VARCHAR'? –

+0

對不起,我的錯。請參閱編輯。 – gzaxx

+0

在這種情況下不是隻從startDate獲得日期,而是使用他的時間和從stopOvertime添加時間的日期時間 – Alex

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); 
+0

雖然此代碼片段可能會解決問題,但[包括解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – gunr2171

相關問題