SQL 服务器:如何验证 yyyymmddhhmmss

SQL Server : How to validate for yyyymmddhhmmss

为避免任何转换错误,我们想验证目标字符串是否可以使用 isdate 公式转换为日期时间,如下所示。

CASE WHEN isdate(@targetstring)= 1 then cast(@targetstring as datetime) else '1900-01-01 00:00:00' end

它按预期工作,它 returns 1 当它可以转换时。

select isdate('2021-06-22 23:27:00')
select isdate('20210622')
select isdate('20210622 23:00:00')

但 yyyymmddhhmmss 无法按预期工作,它 returns 0,即使字符串可以转换为日期时间。

select isdate('20210622230000')

如果我们使用它,它似乎可以工作。

select isdate(left('20210622230000', 8) + ' ' + substring('20210622230000', 9,2) + ':' + substring('20210622230000', 11,2) + ':' + substring('20210622230000', 13,2))

如果有更好的想法,请告诉我。谢谢。

只是说您可以 trim 使用 STUFF()

进行字符串操作

例子

Declare @S varchar(50)='20210622232715'

Select try_convert(datetime,stuff(stuff(stuff(@S,13,0,':'),11,0,':'),9,0,' '))

结果

2021-06-22 23:27:15.000