将 varchar yyyy-mm-dd T hh:mm 转换为 sql 服务器中的 datetime2

convert varchar yyyy-mm-dd T hh:mm to datetime2 in sql server

如果varchar是2021-08-15T14:00:06Z格式,我可以用下面的代码转换

SELECT CONVERT(datetime2, '2021-08-15T14:00:06Z')

结果:2021-08-15 14:00:06.0000000

如果数据格式为yyyy-mm-dd T hh:mm

SELECT CONVERT(datetime2, '2021-08-15T14:03')

结果:

Conversion failed when converting date and/or time from character string.

问题:如何将 varchar(50): yyyy-mm-dd T hh:mm 转换为 datetime2: yyyy-mm-dd hh:mm:ss.000

varchar(50): '2021-08-15T14:03' 预期结果:datetime2: 2021-08-15 14:03:00.000

格式非常接近 ISO8601,使用起来可能最简单...

declare @somedate char(16) = '2021-08-15T14:03';
select convert(datetime2, @somedate + ':00', 126);

或者只是剪掉“T”...

declare @somedate char(16) = '2021-08-15T14:03';
select convert(datetime2, replace(@somedate, 'T', ' '), 120);

如果格式是 yyyy-MM-dd-THH:mm,这是另一种选择,您可以简单地连接秒数。

SELECT CONVERT(datetime2, '2021-08-15T14:03'+':00')

结果

2021-08-15 14:03:00.0000000