如果date =''暂时将日期设置为sysdate

时间:2014-02-28 18:00:28

标签: mysql date between

我有包含开始日期和结束日期的数据,有时结束日期为空,现在是

'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,否则它将不会考虑日期。那个语法是什么? 我不知道它是否是一个案例陈述,如果是,我将如何写出来。

2 个答案:

答案 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)

  • 创建一个包含w_prov_sensitive(CREATE TABLE ... SELECT语法)中所有行的临时表
  • 如果临时表设置为0 / NULL /无论
  • ,则将所有END_DATE更新为NOW()
  • 通过加入临时表
  • 进行更新

你也可以使用布尔逻辑来工作并使用一个复杂的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() )