2009-12-11 79 views
1

使用SQL Server 2005,我正在處理一個數據庫,該數據庫有兩列來跟蹤本質上是一個單一的DateTime的內容(而且我不能爲我的數字生活找出爲什麼有人會認爲這是一個好主意)。如何合併來自兩個DateTime列(SQL Server)的數據?

基本上,一列,我們稱之爲OrderDate,包含一個DateTime,像這樣:2008-02-29 00:00:00:00,而另一列OrderTime有這樣一個列表:1900-01-01 11: 15:00.000

所以,現在我不得不將這兩者結合起來,只要我想在一個地方顯示整個日期和時間。從用戶界面的角度來看,這很容易,但我如何在數據庫級別執行此操作?我希望能夠編寫一個查詢查找來自這兩列的組合日期和時間之間的DATEDIFF,並將其與另一個DateTime值進行比較。

例:

SELECT DATEDIFF(mi, CompletionTime, OrderTime) AS TurnAroundTime FROM SomeRecord 

上述福利課程,OrderTime的日期組件是1900-01-01,導致略微傾斜結果的問題...

回答

1

在SQL中使用「OrderDate + OrderTime」來創建「OrderDateTime」。或者定義一個計算列。

SQL標準支持在日期時間上的標準添加,我相信,並且SQL Server實現它。

There is an example in BOL

+0

我還補充說,儘管他應該有絕對的把握這兩列將永遠不會有一個日期或時間,以及一個時間或日期的「作品」,分別。例如,他可以確定他在OrderTime中永遠不會看到'1992-01-01 11:15:00.000'嗎?在這種情況下,我建議在calc'd列中使用DATEPART()進行一些計算。 – 2009-12-11 20:29:05

2

創建一個計算列加在一起

Alter Table TableName Add CompleteDate as DateOnlyColName + TimeOnlyColName 

,以確保在DateOnlyColName錯誤的時間數據不inadvertenetly加入,用這個代替...

Alter Table TableName Add CompleteDate as 
     DateAdd(day, DateDiff(day, 0, DateOnlyColName), 0) + 
         TimeOnlyColName 
相關問題