Используемый формат даты и времени представляет собой совокупность всех никогда не делающих это в одном пакете ... Это зависит от языка, культуры и нестандартности.
Но - везунчик - вы очень близки к существующему стандартному формату в SQL-Server. Прочитайте о CAST()
и CONVERT()
и третьем параметре. .
Попробуйте это:
SET LANGUAGE ENGLISH;
DECLARE @YourDateTimeString VARCHAR(100)='December 4 2018, 11:10:00 AM';
SELECT CONVERT(DATETIME,REPLACE(@YourDateTimeString,',',''),109);
Обязательно используйте язык, который знает «декабрь». В моей культуре (немецком) это был «декабрь», и сценарий провалился бы ...
Кажется, достаточно заменить запятую, чтобы перейти в формат 109 ...
Если есть возможность изменить ввод, попробуйте убедить отправляющую сторону использовать стандартный формат, лучше всего ISO8601 (yyyyMMddTHH:mm:ss
).
UPDATE
Во время тестирования у меня запятая была не в том месте. С данной строкой это работает даже без каких-либо замен:
SET LANGUAGE ENGLISH;
DECLARE @YourDateTimeString VARCHAR(100)='December 4, 2018 11:10:00 AM';
SELECT CONVERT(DATETIME,@YourDateTimeString,109);