Храните даты как даты, а не строки. Я рекомендую вам указывать значение в виде даты, а не строки:
SELECT CONVERT(date, PersonalDetails_DOB, 103) as PersonalDetails_DOB
FROM Users;
Вы безопаснее, используя try_convert()
:
SELECT TRY_CONVERT(date, PersonalDetails_DOB, 103) as PersonalDetails_DOB
FROM Users;
Чтобы найти неверные значения, вы можете сделать:
select PersonalDetails_DOB
from users
where TRY_CONVERT(date, PersonalDetails_DOB, 103) is null;
Вы можете конвертировать обратно строку, если хотите.
Я бы порекомендовал вам исправить структуру данных. Это должно работать:
update users
set PersonalDetails_DOB = CONVERT(date, PersonalDetails_DOB, 103);
alter users alter column PersonalDetails_DOB date;