SQL Server Конвертировать Varchar в Datetime SQL сервер - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть этот формат даты: 2011-Aug-28 18:01:00 (в varchar), и я хочу преобразовать его в datetime, изменив этот формат на '2011-08-28 18:01:00'.Может кто-нибудь помочь мне преобразовать это в SQL Server?

Заранее спасибо.

1 Ответ

0 голосов
/ 25 сентября 2019

Пример

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

Возвраты

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

Опция с CROSS APPLY и меньшим количеством преобразований

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)
...