2011-09-02 100 views
41

好了 - 我已經問了幾個人,有一定是一個簡單的方法來做到這一點....結合日期和時間字段爲DateTime,SQL Server 2008中

declare @Date date 
declare @Time time 
declare @datetime datetime 

select @Date = convert(Date,GetDate()) 
select @Time = convert(Time,GetDate()) 

select @Date, @Time, @Date + @Time (+ operator fails!) 

我真的有到: 1)轉換爲字符串,然後轉換爲日期時間字段? 2)使用使用DateAdd和日期部分先添加小時,然後分鐘,然後秒.....

+4

我不認爲這是一個重複的問題,這是一個關於新問題日期和時間類型在SQL 2008中。另一個問題根本不涉及這些,並且都是關於DateTime類型的。 –

回答

52
@Date + cast(@Time as datetime) 

在SQL Server 2012中,我假設的SQL Server 2014,你neeed投在日期和時間變量約會時間。

cast(@Date as datetime) + cast(@Time as datetime) 
+0

消息402,級別16,狀態1,行8 數據類型日期和日期時間在添加運算符中不兼容。 – Davos

+0

同意,查找錯誤 - SQL Server數據庫錯誤:數據類型日期和日期時間在添加運算符中不兼容。你需要像@jdavies指出的那樣將它們都轉換爲日期時間。 – mprost

+0

@mprost不在SQL Server 2008中,但在SQL Server 2012中,您是正確的。也可能在SQL Server 2014中。我已經更新了答案。 –

9

先嚐試他們兩個鑄造DATETIME:

SELECT CAST(@Date AS DATETIME) + CAST(@Time AS DATETIME) 
+0

正確的是非確定性形式:ALTER TABLE MyTable的 ADD MyDateTime2 AS ( \t DATEADD \t( 天 \t \t,DATEDIFF \t \t( \t 天 \t \t \t,CONVERT(DATE,「1 9000101' ,112) \t \t \t,數值指明MyDate \t \t) \t \t,CONVERT(DATETIME2(7)中,數值指明MyTime) \t) )堅持 –

3

這應該工作:

select @Date, @Time, CAST(@Date AS datetime) + CAST(@Time AS datetime) 
相關問題