ORA-01830: 日期格式圖片在轉換整個輸入字符串之前結束

本文目錄

事件

今天做項目的時候,編寫plsql腳本時遇到一個日期轉換的問題,如果在plsql調試時,腳本可以正常執行,但是程序調用時,就會報錯ORA-01830: 日期格式圖片在轉換整個輸入字符串之前結束

to_date函數

to_date函數用於字符串轉日期,與to_char函數剛好相反。to_date形如

--oracle 爲了區分分鐘和月份,月份以mi表示
to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') 
to_date('2004-05-07','yyyy-mm-dd')

參數1是源字符串,參數2是要轉換成的日期形式。但是to_date限制兩者精確度須一致,比如to_date(‘2004-05-07 13:23:44’,’yyyy-mm-dd’)這個就無法轉換。

我手工執行時傳入的是’yyyy-mm-dd’這種形式的,而程序調用時傳入值精確到秒,就報錯了,解決辦法就是用substr截取參數的年月日部分。

示例代碼

    --plsql 定義變量this_date
    --start_date爲varchar2類型
    select to_date(start_date,'yyyy-mm-dd')
    into this_date
    from dual

以上腳本start_date長度爲10(即形式爲年-月-日),則可以成功執行,如果精確到時分秒甚至更長,則無法轉換爲’yyyy-mm-dd’的形式,報出如題錯誤,解決辦法如下

    --截取start_date年月日部分使用
    select to_date(substr(start_date,1,10),'yyyy-mm-dd')
    into this_date
    from dual
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章