ORA-01858: a non-numeric character was found where a numeric was expected
OCIStmtExecute: ORA-01858: a non-numeric character was found where a numeric was expected 在搜尋或更新欄位時,其中一個欄位是日期格式,但進來的值不是數字,而是一個非數字的值,所造成的錯誤。 SELECT TO_DATE([ 欄位 ],‘YYYY-MM-DD’) FORM [TABLE_NAME] INSERT INTO [TABLE_NAME] ([ 日期欄位 ]) VALUES (TO_DATE([ 值 ],‘YYYY-MM-DD’)) UPDATE [TABLE_NAME] SET [ 日期欄位 ]= TO_DATE([ 值 ],‘YYYY-MM-DD’) PHP 要寫入資料庫時一直這個出現錯誤訊息,原來是把 TO_DATE 放錯地方使用,應該要放在 SQL 內,理解以後感覺犯了一個蠻好笑的錯誤,記錄起來以後不要再犯啦 ! 正確使用方式 $InserDate=’2019-11-10’; $SQL=" INSERT INTO [TABLE_NAME] ([ 日期欄位 ]) VALUES (TO_DATE([:insertdate],‘YYYY-MM-DD’)) "; $stmtSel = $dbc->getConnection()->prepare($SQL); $stmtSel->bindValue(":insertdate", $InserDate); 錯誤使用: $stmtSel->bindValue("TO_DATE([:insertdate],‘YYYY-MM-DD’)", $InserDate);