2016-11-30 12 views
0

datetime2(7)と時刻がvarchar(5)として保存されています。Datetime2とvarcharをdatetimeに変換またはキャスト

日= 2016年11月30日00:00:00.000000(DATETIME2)

時間= 9:00(varchar型)

出力があるべき2016年11月30日09: 00:00.000000(datetime)。

これらをdatetimeとして変換またはキャストする方法を教えてください。私はいくつかの方法を試しましたが失敗しました。

ご協力いただきありがとうございます。

+0

これはうまくいかない方法で試しましたか?いくつかのサンプルデータと、人々が作業するための予想される出力を提供できますか? –

+0

データベーステーブルにあるものと同じサンプルデータを投稿できますか? – Hackerman

+0

ありがとうが、私はそれを理解した。変換する(datetime、convert(char(8)、DATE、112)+ ''変換する(char(8)、TIME、108)) – Mally

答えて

0

たぶん簡単な?

DECLARE @d DATETIME2(7)='2016-11-30 00:00:00.000000' 
DECLARE @t VARCHAR(5)='09:00'; 

SELECT CAST(CAST(@d AS DATETIME) + CAST(@t+':00' AS DATETIME) AS datetime2(7)) 

あなたの時間はあなたがDATETIMEにこれをキャストすることができるよりも、ちょうど:00それにする必要があります。タイプDATETIMEの2つの値を追加できます。

表現全体をDATETIME2に再変換することができます。

0

どのようにこのようなものについて:このよう

DECLARE @MYDATE DATETIME2; 
DECLARE @MYTIME VARCHAR(5); 

SET @MYDATE = '2016-11-30'; -- this is equal to 2016-11-30 00:00:00.000000 
SET @MYTIME = '09:00'; 
-- for datetime2 
SELECT CAST(CAST(LEFT(@MYDATE,10) AS VARCHAR) + ' ' + @MYTIME + ':00.000000' AS DATETIME2) 
-- for datetime 
SELECT CONVERT(DATETIME,CAST(LEFT(@MYDATE,10) AS VARCHAR) + ' ' + @MYTIME + ':00') -- for datetime 
関連する問題