Проблема на самом деле в ваших 2 .
, где вы должны иметь :
. Если позиция не меняется, то у вас есть целый ряд вариантов:
WITH N AS
(SELECT N
FROM (VALUES (NULL),
(NULL),
(NULL),
(NULL),
(NULL),
(NULL),
(NULL),
(NULL),
(NULL),
(NULL)) N (N) ),
Tally AS
(SELECT TOP 200
ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS I
FROM N N1,
N N2,
N N3)
SELECT S.YourDate,
TRY_CONVERT(datetime2(7), S.YourDate, I) AS ConvertedDate,
I AS StyleCode
FROM Tally
CROSS APPLY (VALUES ('21-DEC-17 11.09.52.020000 AM')) V(YourDate)
CROSS APPLY (VALUES (STUFF(STUFF(V.YourDate, 13, 1, ':'), 16, 1, ':'))) S(YourDate)
WHERE TRY_CONVERT(datetime2(7), S.YourDate, I) IS NOT NULL;
Редактировать: фактически, если вы измените эти 2 .
, вы не сможетедаже не нужен код стиля, по крайней мере, на моем экземпляре и языке;но я предполагаю, что при значении типа DEC
вы используете английскую производную:
SELECT S.YourDate,
TRY_CONVERT(datetime2(7), S.YourDate) AS ConvertedDate
FROM (VALUES ('21-DEC-17 11.09.52.020000 AM')) V (YourDate)
CROSS APPLY (VALUES (STUFF(STUFF(V.YourDate, 13, 1, ':'), 16, 1, ':'))) S (YourDate);