转换或铸造DATETIME2和varchar成日期时间
问题描述:
我有一个日期存储为存储为VARCHAR(5)DATETIME2(7)和时间。转换或铸造DATETIME2和varchar成日期时间
例如
日期= 2016年11月30日00:00:00.000000(DATETIME2)
时间= 09:00(VARCHAR)
输出应为2016年11月30日09: 00:00.000000(日期时间)。
如何将它们转换或转换为日期时间。我尝试了几种方法,但都没有成功。
非常感谢您的帮助。
答
,因为这也许简单吗?
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
。
答
怎么是这样的:
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
您尝试过哪些方法无效?你能否提供一些样本数据和预期的输出供人们使用。 –
您是否可以像在数据库表中那样发布样例数据? – Hackerman
谢谢,但我想通了。 convert(datetime,convert(char(8),DATE,112)+''+ convert(char(8),TIME,108)) – Mally