我在將varchar(yyyymmdd)轉換爲日期(yyyymmdd)時遇到問題。Oracle sql - 將字符串轉換爲日期
我有一個參數(pdate varchar2,yyyymmdd格式)需要轉換爲日期類型yyyymmdd格式的過程。 到目前爲止,我嘗試過。
vdate date;
vdate := (to_date(SUBSTR(pdate,1,4)+SUBSTR(pdate,5,2)+SUBSTR(pdate,7,2), 'yyyymmdd'));
這引發了ORA-01840:輸入值不夠長的日期格式的錯誤。
任何幫助,將不勝感激。
什麼是失敗的一個PDATE的價值最大,因爲建議? ('20170101',1,4)|| SUBSTR('20170101',5,2)|| SUBSTR('20170101',7,2)) ,to_date(SUBSTR('20170101',1,4)|| SUBSTR('20170101',5,2)|| SUBSTR('20170101',7,2),'YYYYMMDD') ,To_date('20170101', 'YYYYDDMM')from dual;' – xQbert
你只需要'to_date(pdate,'yyyymmdd')',假設你的pdate包含了所有的信息。事實上,我很確定你可以擺脫你的程序,只需使用'to_date()'函數! – Boneist
正如已經指出的那樣,你的嘗試失敗的原因是在Oracle中使用「||」進行連接,而不是使用「+」。你在做什麼是你提取的年份,月份和日期,作爲字符串(四位數字,兩位數字,兩位數字)。然後你*添加*他們。在幕後,Oracle將它們轉換爲「NUMBER」並添加它們。然後你應用帶'varchar2'輸入的'to_date()',所以Oracle - 在幕後 - 將添加的結果轉換爲一個四字符的字符串。這不足以成爲一個日期(反正它會是錯誤的!) – mathguy