今天在學習Oracle時碰到一個錯:文字與格式字符串不匹配。
我在Oracle數據庫中創建了一張表:
--創建員工表employee create table employee ( empon number(4) not null,--員工編號 ename varchar2(10),--員工姓名 job varchar2(9),--員工工種 mgr number(4),--上級經理編號 hiredate date,--受雇日期 sal number(7,2),--員工薪水 comm number(7,2),--福利 deptno number(2)--部門 );
然后我想通過代碼的方式向這張員工表中插入一條數據,我想這應該很簡單吧,不就是一條insert語句嗎。
於是我是這樣寫的:
insert into employee values(1237,'李四','未知',1223,'2016-7-30 13:07:24',7000,400,5)
但是寫完過后,一執行就一直報這個錯,好燒腦,最后終於找到解決方案了。
解釋:
向oracle表插入時間格式的數據是一個相對來講比較麻煩的事情,要么你嚴格遵從當前會話的時間格式書寫你的時間值,要么使用轉換函數自定義時間數據的格式。
有兩個與時間相關的轉換函數:to_char 和 to_date . to_char(時間值,時間格式)函數將時間值轉換為字符串形式,通常在查詢中使用;to_date(字符串,時間格式)
則把格式字符串轉換時間值,通常在insert 語句中使用。
所以我們把sql語句改成這樣就完美的解決了問題:
insert into employee values(1237,'李四','未知',1223,to_date('2016-7-30 13:07:24','yyyy/mm/dd HH24:MI:SS'),7000,400,5)