我有包含开始日期和结束日期的数据,有时结束日期为空,现在是
'0000-00-00'
我的查询中写道:
UPDATE w_preletter as L INNER JOIN w_prov_sensitive AS P ON L.IRS_TAX_ID = P.TAX_ID
set L.sensitive_provider = '1', L.OFFSET_RESTRICTED = P.OFFSET_RESTRICTED
where L.DATE_OF_SERVICE_BEG between P.BEGIN_DATE AND P.END_DATE;
但如果日期为'0000-00-00'
,则表示它仍然有效,因此我需要暂时将其视为sysdate
,否则它将不会考虑日期。那个语法是什么?
我不知道它是否是一个案例陈述,如果是,我将如何写出来。
答案 0 :(得分:0)
试试这个
UPDATE w_preletter as L INNER JOIN w_prov_sensitive AS P ON L.IRS_TAX_ID = P.TAX_ID
set L.sensitive_provider = '1', L.OFFSET_RESTRICTED = P.OFFSET_RESTRICTED
where L.DATE_OF_SERVICE_BEG between P.BEGIN_DATE AND P.END_DATE
or (L.DATE_OF_SERVICE_BEG >= P.BEGIN_DATE AND P.END_DATE = '0000-00-00')
答案 1 :(得分:0)
你也可以使用布尔逻辑来工作并使用一个复杂的WHERE子句。
where
( P.END_DATE != 0 and L.DATE_OF_SERVICE_BEG between P.BEGIN_DATE AND P.END_DATE )
OR ( P.END_DATE = 0 and L.DATE_OF_SERVICE_BEG between P.BEGIN_DATE AND NOW() )