![](/img/trans.png)
[英]DateTime conversion failed when converting date and/or time from character string
[英]Datetime! Conversion failed when converting date and/or time from character string
我嘗試將帶有時間戳的列從nvarchar
轉換為datetime
(因為我不確定通過將 Excel 導出到 SQL Server,時間戳內的精度不會丟失),但該列仍然無法轉換,顯示相同的錯誤時間
從字符串轉換日期和/或時間時轉換失敗 - 轉換
我試過
alter table X
alter column [Timestamp] datetime
我也試過:
convert(datetime, [Timestamp], 103)
try_convert(datetime, [Timestamp], 103)
cast ([Timestamp] as datetime)
仍然沒有進展。
這是列中的示例數據:
2019-02-13-13.01.05.6100000015
2019-02-18-13.10.46.4850000015
能否請你幫忙?
你可以試試這個:
select
try_convert(datetime2(7),
STUFF(STUFF(REPLACE('2019-02-18-13.10.46.485000015','.',':'), 11, 1, ' '),20,1,'.')
,121)
最好將類型更改為DATETIME2,因為它比 DATETIME 具有更高的精度。
首先將時間戳字符串的格式更改為可以毫無問題地轉換為DATETIME2
的格式。
UPDATE X
SET [Timestamp] = CONCAT(LEFT([Timestamp],10), 'T', REPLACE(SUBSTRING([Timestamp],12,8),'.',':'), '.', SUBSTRING([Timestamp],21,9))
WHERE [Timestamp] LIKE '[12][0-9][0-9][0-9]_[01][0-9]_[0-3][0-9]_[0-2][0-9].[0-6][0-9].[0-6][0-9].[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]%';
然后仔細檢查是否還有一些不能按原樣投射。
SELECT COUNT(*) Errors, MAX([Timestamp]) Example
FROM X
WHERE TRY_CAST([Timestamp] AS DATETIME2) IS NULL;
如果計數為 0,則可以更改列的類型。
ALTER TABLE X
ALTER COLUMN [Timestamp] DATETIME2(7);
在這里對 reextester 進行測試
請注意,會丟失一些精度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.