Если у вас есть только эти 2 формата, это то, как вы можете это сделать.
Я предполагаю, что
'02 .07.2008 'имеет формат' dd.mm.yyyy '
'2007-07-10' имеет формат 'гггг-мм-дд'
Если у вас больше форматов, чем это, вы должны соответствующим образом изменить 'case' в предложении 'select'
declare @t table (a varchar(12))
insert @t values ('02.07.2008')
insert @t values ('2007-07-10')
select convert(date, a, case when charindex('-',a) = 5 then 21 else 103 end)
from @t
Вывод
2008-07-02
2007-07-10
Формат является стандартным для поля даты, но если вы хотите сохранить его как varchar, вы можете отформатировать его как dd.mm.yyyy следующим образомвместо этого.
select replace(convert(varchar, convert(date, a, case when charindex('-',a) = 5
then 21 else 103 end), 103), '/', '.')
from @t
Вывод
02.07.2008
10.07.2007
Я должен указать, что вы всегда должны хранить дату как дату, а не как varchar в базе данных, когда это возможно.