SQL Server предпочитает даты в формате ггггммдд, поэтому для форматирования ваших данных потребуются некоторые манипуляции со строками. Мы также должны использовать функцию IsDate, чтобы убедиться, что у нас есть правильная дата.
Итак:
Cast(Case When IsDate(Right(@Data, 4)
+ SubString(@Data, 3, 2)
+ Left(@Data, 2)) = 1
Then Right(@Data, 4)
+ SubString(@Data, 3, 2)
+ Left(@Data, 2) End As DateTime)
Обратите внимание, что этот код должен правильно обрабатывать недопустимые даты, содержащиеся в столбце varchar. Если дата недействительна, этот код вернет NULL.