我的日期存储为 datetime2(7),时间存储为 varchar(5)。
e.g。
日期= 2016-11-30 00:00:00.000000 (datetime2)
时间= 09:00 (varchar)
输出应 2016-11-30 09:00:00.000000 (日期时间)。
如何将这些转换或转换为日期时间。我尝试了几种方法,但都没有成功。
提前感谢您的帮助。
答案 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