将Datetime2和varchar转换或转换为datetime

时间:2016-11-30 13:56:36

标签: sql-server-2008

我的日期存储为 datetime2(7),时间存储为 varchar(5)

e.g。

日期= 2016-11-30 00:00:00.000000 (datetime2)

时间= 09:00 (varchar)

输出应 2016-11-30 09:00:00.000000 (日期时间)。

如何将这些转换或转换为日期时间。我尝试了几种方法,但都没有成功。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这可能很简单吗?

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))

您的时间只需要:00,而不是将其投放到DATETIME。可以添加两个DATETIME类型的值。

整个表达式可以重新转换为DATETIME2

答案 1 :(得分: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
相关问题