那是因为您提供的样式标签和日期不匹配。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