1. 程式人生 > >Oracle ora-06861: 文字與格式字串不匹配

Oracle ora-06861: 文字與格式字串不匹配

問題描述:
表時間欄位儲存的是varchar2型別,使用sql語句做時間條件查詢的時候出現 ora-06861: 文字與格式字串不匹配。原語句如下:
select v.tid
from view_article_content v
where v.infoptype = 4
and to_char(to_date(v.release_time,
‘yyyy-mm-dd hh24:mi:ss’),
‘yyyy-mm-dd’) >= ‘2000-01-01’
and to_char(to_date(v.release_time,
‘yyyy-mm-dd hh24:mi:ss’),
‘yyyy-mm-dd’) <= ‘2018-01-09’
分析問題:
從報錯的語句看應該是release_time欄位儲存了不規範的時間字元,所以在資料庫時間欄位上,最好要定義成時間型別,如果已經成型的系統,只要稍微修改一下語句就行了。都轉換成時間型別進行比較
參考方案:
select v.tid, v.module_id, v.content_title
from view_article_content v
where v.infoptype = 4
and to_date(v.release_time, ‘yyyy-mm-dd hh24:mi:ss’) >= to_date(‘2000-01-01’,’yyyy-mm-dd hh24:mi:ss’) and to_date

(v.release_time, ‘yyyy-mm-dd hh24:mi:ss’) <= to_date(‘2018-01-09’,’yyyy-mm-dd hh24:mi:ss’)