2011-09-02 16 views
41

に日付と時刻のフィールドを組み合わせた - 私は少数の人々を求めてきましたし、これを実行する簡単な方法があるように持っている....は日時、[OK]を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!) 

は、私は本当に持っていますかto: 1)文字列に変換してdatetimeフィールドに変換しますか? 2)は、SQL Server 2012のでは

+4

私は、これは新しいについての質問です、これは重複問題だとは思いませんSQL 2008の日付と時刻の型です。もう1つの質問にはこれらが含まれておらず、すべてがDateTime型に関するものです。 –

答えて

52
@Date + cast(@Time as datetime) 

..... DateAdd関数とDATEPARTは、まず、次に分、秒を時間を追加するために使用し、私はあなたが日付と時刻の変数の両方をキャストするneeedのSQL Server 2014を想定します日付時刻。

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

メッセージ402、レベル16、状態1、行8 データ型dateとdatetimeは、add演算子では互換性がありません。 – Davos

+0

合意、参照エラー - SQL Serverデータベースエラー:データ型dateとdatetimeは、add演算子で互換性がありません。 @jdaviesで指摘されているようにdatetimeとして両方をキャストする必要があります。 – 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という は、( \t \t日 \t \t \t ( AS DATEDIFF \t \t( \t \t \t日 \t \t \t、CONVERT(DATEを、「 \t DATEADDをMyDateTime2を追加1 9000101' 、112) \t \t \t、MyDateに該当 \t \t) \t \t、(DATETIME2(7)を変換、mytime) \t) )永続 –

3

これは動作するはずです:

select @Date, @Time, CAST(@Date AS datetime) + CAST(@Time AS datetime)