Sql server 2008 r2 nvarchar到时间转换

Sql server 2008 r2 nvarchar到时间转换,sql-server-2008-r2,type-conversion,nvarchar,Sql Server 2008 R2,Type Conversion,Nvarchar,我必须开发一个从另一个系统接收数据(在数据库中)的系统。我面临的问题是所有日期和时间数据都在NVARCHAR中。我必须转换为日期和时间,以计算持续时间。我正在使用SQLServer2008R2 数据示例: STR_YMD STR_HMS -------------------- 20150101 151000 20090807 123009 20130113 145602 20090515 061700 如何将此数据转换为以下DATETIME数据 STR_DT

我必须开发一个从另一个系统接收数据(在数据库中)的系统。我面临的问题是所有日期和时间数据都在
NVARCHAR
中。我必须转换为
日期
时间
,以计算持续时间。我正在使用SQLServer2008R2

数据示例:

STR_YMD     STR_HMS
--------------------
20150101    151000
20090807    123009
20130113    145602
20090515    061700
如何将此数据转换为以下
DATETIME
数据

STR_DT 
--------------------
2015-01-01  15:10:00
2009-08-07  12:30:09
2013-01-13  14:56:02
2009-05-15  06:17:00
希望有人能帮助我。提前谢谢

打赌像这样的事

SELECT CAST(SUBSTRING(STR_YMD, 1,  4) + '/' + SUBSTRING(STR_YMD, 5,  2) + '/' +
SUBSTRING(STR_YMD, 7,  2) + ' ' + SUBSTRING(STR_HMS, 1,  2) + ':' + 
SUBSTRING(STR_HMS, 3,  2) + ':' + SUBSTRING(STR_HMS, 5,  2) AS DateTime)
编辑:您可以使用LEFT功能与短时间格式兼容:

SELECT CAST(SUBSTRING(STR_YMD, 1, 4) + '/' + SUBSTRING(STR_YMD, 5, 2) + '/' +
SUBSTRING(STR_YMD, 7, 2) + ' ' + SUBSTRING(LEFT(STR_HMS+'000000', 6), 1, 2) + ':' +
SUBSTRING(LEFT(STR_HMS+'000000', 6), 3, 2) + ':' +
SUBSTRING(LEFT(STR_HMS+'000000', 6), 5, 2) AS DateTime)

你看过了吗?这是可能的,但是STR_HMS的长度可能会不同,所以我必须检查所有的变体。e、 g.1750。我想我可以使用一些转换函数。无论如何,谢谢。如果这个答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。