Это потому, что тег стиля, который вы предоставляете, и дата не совпадают. Тег стиля 131
в соответствии с CAST и CONVERT (Transact-SQL) использует формат dd/mm/yyyy hh:mi:ss:mmmAM
. Твое свидание не похоже на это.
Ни один из тегов стиля на этой странице не соответствует стилю, который вы используете, поэтому простой CONVERT
не сработает.
Предполагая, что вы не можете изменить макет своих данных, это один из способов, но он беспорядочный:
SELECT CONVERT(datetime2,REPLACE(CONVERT(varchar(10),CONVERT(datetime2,REPLACE(LEFT('18-04-14 04:17:48.000000000 PM',8),'-','/'),11),102),'.','-') + 'T' +
CONVERT(varchar(21),CONVERT(time,RIGHT('18-04-14 04:17:48.000000000 PM',21))))
Изменить: И несколько дополнительных примеров, и использовать против таблицы:
CREATE TABLE #Sample (OddDate varchar(50));
INSERT INTO #Sample
VALUES ('18-04-14 04:17:48.000000000 PM'),
('18-03-31 12:58:45.000000000 AM'),
('18-02-24 12:58:45.000000000 PM'),
('17-01-04 07:59:59.000000000 AM');
SELECT CONVERT(datetime2,REPLACE(CONVERT(varchar(10),CONVERT(datetime2,REPLACE(LEFT(S.OddDate,8),'-','/'),11),102),'.','-') + 'T' +
CONVERT(varchar(21),CONVERT(time,RIGHT(S.OddDate,21))))
FROM #Sample S;
GO
DROP TABLE #Sample;
Возвращает:
---------------------------
2018-04-14 16:17:48.0000000
2018-03-31 00:58:45.0000000
2018-02-24 12:58:45.0000000
2017-01-04 07:59:59.0000000
person
Larnu
schedule
06.04.2018
select convert( datetime2, '2018-04-14 04:17:48.000000000 PM')
или используйте правильный, напримерselect convert( datetime2, '18-04-14 04:17:48.000000000 PM',11)
- person scsimon   schedule 06.04.2018