Stored-Procedures
SQL USING CAST 在儲存過程中的查詢中
我試圖在具有強制轉換功能的儲存過程中使用查詢。但是在執行 SP 時出現錯誤
從字元串轉換日期和/或時間時轉換失敗。
SELECT * FROM TEMPTABLE WHERE Status = 'A' AND technician = 5 and schid not in (1047) and CAST(approxstartdate as datetime) > = ( select CAST(approxstartdate as datetime) from trscheduler where Status = 'A' AND technician = 5 and schid = 1059 ) order by CAST(approxstartdate as datetime)
此查詢用於游標。
請讓我知道一個替代方案。
您在
approxstartdat
e 列中有無法轉換為datetime
的數據,這是壞數據,如果您看到該數據是什麼,您可能也不知道如何將其轉換為日期時間。如果您使用的是 SQL Server,請查看
try_convert
如果值無法轉換,則返回 null。您可以使用此功能查找表中無法轉換的值,然後修復或刪除它們。
這裡的問題要麼是錯誤的數據,要麼是使用了不正確的日期格式。
假設您使用的是 MSSQL,因為您沒有說明什麼 RDBMS,請使用以下程式碼來辨識無法轉換為 DATETIME 的記錄:
SELECT * FROM ( SELECT *, TRY_CAST(approxstartdate AS DATETIME) as cast_approxstartdate FROM TEMPTABLE ) src WHERE src.cast_approxstartdate IS NULL
辨識出它們後,您可以清理錯誤數據或確定其他解決方案,例如,您可能需要調整會話的 DATEFORMAT 設置,或者數據庫的應用程序可能會以不正確的格式輸入數據,具體取決於客戶端機器的區域設置。