Вы можете попробовать это. Сохранение даты в этом формате не является хорошим предложением. Вам следует использовать правильный тип данных, который предназначен и доступен для.
Вам следует обновить значения, указав правильное значение даты и времени, а затем также изменить тип данных. Это сэкономит ваше время, и вам не нужны эти преобразования каждый раз.
Select Try_Cast('19-May 2019' as Datetime)
ИЛИ
Select Try_Cast('19-May' + '2019' as Datetime)
Чтобы получить первую дату месяца, вы можете попробовать следующий запрос.
SELECT DATEADD(month, DATEDIFF(month, 0, Try_Cast('19-May 2019' as Datetime)), 0) AS StartOfMonth
Редактировать
Чтобы получить первую дату месяца согласно заданным данным в строке, вы можете использовать следующий запрос.
declare @dateinStr varchar(20) = '19-May'
Select try_cast('01-' + Replace(@dateinStr, LEFT(@dateinStr, 3), '') + LEFT(@dateinStr, 2) as Datetime) as Date
Вот демоверсия .