SQL 服务器将 Varchar 转换为日期时间 SQL 服务器

SQL Server Convert Varchar to Datetime SQL server

我有这个日期格式:2011-Aug-28 18:01:00(在 varchar 中),我想将它转换为日期时间更改为这种格式 '2011-08-28 18:01:00' .有人可以帮我在 SQL 服务器中转换这个吗?

提前致谢。

例子

Declare @YourTable Table ([YourTextCol] ntext)
Insert Into @YourTable Values 
 ('21-AUG-2019 09-57-46')
,('2011-Aug-28 18:01:00')

Select *
      ,NewValue = IsNull(try_convert(datetime,convert(varchar(max),[YourTextCol]))
                        ,try_convert(datetime,left(convert(varchar(max),[YourTextCol]),12)+replace(substring(convert(varchar(max),[YourTextCol]),12,8),'-',':')) 
                        )
 From  @YourTable

Returns

YourTextCol             NewValue
21-AUG-2019 09-57-46    2019-08-21 09:57:46.000
2011-Aug-28 18:01:00    2011-08-28 18:01:00.000

具有交叉应用且转化次数较少的选项

Select A.*
      ,NewValue = IsNull(try_convert(datetime,v)
                        ,try_convert(datetime,left(v,12)+replace(substring(v,12,8),'-',':')) 
                        )
 From  @YourTable A
 Cross Apply ( values (convert(varchar(max),[YourTextCol])) ) B(v)