
(資料圖片僅供參考)
在系統集成或從其它表里面轉存時間字段,用字符串存儲時間字段時,可能有一些不合法數據導致系統運行報錯。而由于數據量較多無法用肉眼拍錯,這時候就需要用sql語句篩選出不合法的數據。
如圖下圖中有一字段st_to_date是varchar類型的字段我們在里面存一些合法不合法的數據。
請從表里面篩選出不是這種1986-06-26數據類型的數據,不能轉換成時間類型的也篩出來。也就是主鍵為10001和10002的數據,假設數據很多有幾萬條。
select emp_no,str_to_date(st_date,"%Y-%m-%d") as date from dept_emp
我們可以用字符串轉日期函數看一下轉換結果。當不能轉換時結果為空因此就可以很輕易的得出篩選條件
執行完在條sql就能得到想要的數據
select emp_no,str_to_date(st_date,"%Y-%m-%d") as cc from dept_emp where str_to_date(st_date,"%Y-%m-%d") is null
我們可以用其它類型的時間字段測試一下比如說用20220208在種時間格式實驗一下。
select emp_no,str_to_date(st_date,"%Y%m%d") as cc from dept_emp where str_to_date(st_date,"%Y%m%d") is null
OK效果很好完美收工。記得要注意調一下str_to_date(st_date,"%Y-%m-%d")函數里的時間格式。
求點贊 2023-01-12 9:09分編寫完成。