[英]how to fix this case sql ora-01843 not a valid month
運行 sql 腳本后,出現日期錯誤“ora-01843 not a valid month”,日期格式為 (mm/dd/yyyy) 這發生在 plsql 上,但我沒有意識到請參閱下面的 Z9778840A067410CB30C52828
SELECT COUNT(*) FROM
(SELECT c1.end_date AS eddates,cc.effectiveto,
CASE WHEN cc.effectiveto >= '1/1/4000' THEN '1/1/4000'
WHEN cc.effectiveto is null THEN '1/1/4000'
WHEN cc.effectiveto < '1/1/4000' THEN to_char(cc.effectiveto)
END mock_effectiveto
from (select aa.*,b.perm_id
from smf2.security_xref aa,
smf2.t_security_source b
where identifier_type_id = 4862
and aa.security_id = b.security_id
and b.data_source_id = 52992
AND aa.data_source_id = 52985)c1,
(Select bc.*
FROM ccc_bimbqm.instrument ab , ccc_bimbqm.identifier bc
WHERE bc.identifiertypepermid = 320015
AND ab.instrumentpermid = bc.objectpermid
AND bc.objectpermid IN
(SELECT bondid FROM ccc_muni.munibonds)) cc
WHERE c1.perm_id = cc.objectpermid
and c1.start_date = cc.effectivefrom
and cc.identifiervalue is not null
and c1.code is not NULL ) ax
WHERE ax.eddates <> mock_effectiveto
您可以將您的 CASE 聲明更新為 -
CASE WHEN cc.effectiveto = TO_DATE('01/01/4000', 'MM/DD/YYYY') OR cc.effectiveto is null
THEN TO_DATE('01/01/4000', 'MM/DD/YYYY')
WHEN cc.effectiveto < TO_DATE('01/01/4000', 'MM/DD/YYYY')
THEN to_char(cc.effectiveto)
END mock_effectiveto
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.