MSSQL-從字串轉換日期和/或時間時,轉換失敗

꧁执笔小白꧂發表於2024-10-10

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='無法轉換'

  MSSQL-從字串轉換日期和/或時間時,轉換失敗

(2)修正/刪除

  我這裡不需要這個資料,直接刪除即可。

delete from ProcessData 
where test_time >'2024-10-08' AND ID='2'

相關文章