1、報錯的sql為:
select
ID,
Test_time as 時間,
from ProcessData
where
convert(datetime,test_time,120) between convert(datetime, '2020-10-10', 120) and convert(datetime, '2024-10-11', 120)
它是將Test_time轉化為datetime格式,再用between進行比較;
2、報錯原因:
是由convert()函式報錯引起,需要定位到哪條資料包錯,修正那條資料。
3、對策:
(1)定位報錯源
用於定位是表內哪條資料包錯的sql如下:
select
T1.ID,
T1.ConversionStatus
from
(select
ID,
CASE WHEN TRY_CAST(Test_time AS DATE) IS NULL
THEN '無法轉換' ELSE '可以轉換'END AS ConversionStatus
from ProcessData
where test_time >'2024-10-08'
) T1
where ConversionStatus='無法轉換'
(2)修正/刪除
我這裡不需要這個資料,直接刪除即可。
delete from ProcessData
where test_time >'2024-10-08' AND ID='2'