2016-11-30 64 views
0

我有一个日期存储为存储为VARCHAR(5)DATETIME2(7)和时间。转换或铸造DATETIME2和varchar成日期时间

例如

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

时间= 09:00(VARCHAR)

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

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

非常感谢您的帮助。

+0

您尝试过哪些方法无效?你能否提供一些样本数据和预期的输出供人们使用。 –

+0

您是否可以像在数据库表中那样发布样例数据? – Hackerman

+0

谢谢,但我想通了。 convert(datetime,convert(char(8),DATE,112)+''+ convert(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)) 

你的时间需要只是:00吧,比你可以施放这DATETIME。可以添加两个DATETIME类型的值。

整个表达式可以重新转换为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