Это преобразует ваше значение в тип данных, который должен быть, datetime2(6)
.Типы данных даты и времени не имеют форматов. Если вы храните их в определенном формате, вы делаете это неправильно (это означает, что вы сохраняете значение как varchar
).
DECLARE @YourDate varchar(30) = '07-DEC-18 01.00.54.984000 PM';
SELECT V.YD,
TRY_CONVERT(datetime2(6),F.FormatedYD,106)
FROM (VALUES(@YourDate)) V(YD)
CROSS APPLY (VALUES(STUFF(STUFF(V.YD,13,1,':'),16,1,':'))) F(FormatedYD);
Если бы это была таблица, то я бы исправил ваш фактический тип данных столбца, выполнив следующее:
UPDATE YT
SET YourDateColumn = CONVERT(varchar(30),TRY_CONVERT(datetime2(6),F.FormatedYD,106),126)
FROM YourTable YT
CROSS APPLY (VALUES(STUFF(STUFF(YT.YourDateColumn,13,1,':'),16,1,':'))) F(FormatedYD);
ALTER TABLE YourTable ALTER COLUMN YourDateColumn datetime2(6);