nvarchar到时间转换

时间:2015-07-13 07:05:31

标签: sql-server-2008-r2 type-conversion nvarchar

我必须开发从另一个系统接受数据(在数据库中)的系统。我面临的问题是所有DATE和TIME数据都在NVARCHAR。我必须转换为DATETIME才能计算持续时间。我正在使用SQL Server 2008 R2。

数据示例:

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

希望有人可以帮助我。提前致谢

赌注

1 个答案:

答案 0 :(得分:1)

这样的东西?

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)