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