Sql 将不带分隔符的Varchar值(DDMMYYYYHMMSS格式)转换为DateTime

Sql 将不带分隔符的Varchar值(DDMMYYYYHMMSS格式)转换为DateTime,sql,sql-server,sql-server-2008-r2,Sql,Sql Server,Sql Server 2008 R2,我有一个日期值存储在varchar变量中,没有任何分隔符,即以ddmmyyyhhmmss的形式,如下所示:@charDateTime='19022016122219' 如何将其转换为DateTime类型变量?只需以适当的格式构建一个字符串并使用。我更喜欢126样式(ISO8601):yyyy-mm-ddThh:mi:ss -------------------------------------ddmmyyyyhhMMss ------------------------------------

我有一个日期值存储在
varchar
变量中,没有任何分隔符,即以
ddmmyyyhhmmss
的形式,如下所示:
@charDateTime='19022016122219'


如何将其转换为
DateTime
类型变量?

只需以适当的格式构建一个字符串并使用。我更喜欢126样式(ISO8601):
yyyy-mm-ddThh:mi:ss

-------------------------------------ddmmyyyyhhMMss
-------------------------------------12345678901234
DECLARE @charDateTime varchar(50) = '19022016122219';
DECLARE @dt datetime;

-- style 126 (ISO8601)
-- yyyy-mm-ddThh:mi:ss.mmm (no spaces)

SET @dt = 
    CONVERT(datetime, 
    SUBSTRING(@charDateTime, 5, 4) + '-' +    -- yyyy
    SUBSTRING(@charDateTime, 3, 2) + '-' +    -- mm
    SUBSTRING(@charDateTime, 1, 2) + 'T' +    -- dd
    SUBSTRING(@charDateTime, 9, 2) + ':' +    -- hh
    SUBSTRING(@charDateTime, 11, 2)+ ':' +    -- MM
    SUBSTRING(@charDateTime, 13, 2)           -- ss
    ,126);

SELECT @dt;
结果

(No column name)
2016-02-19 12:22:19.000