在BETWEEN日期AND中的NVL

时间:2013-11-14 12:32:59

标签: oracle date between

好的有很多记录,可能是一个订单号= 11233。

部分代码不正确

 AND a.C_DATE BETWEEN TO_DATE (
                                   NVL ('&C_DATE_FROM', '1900-01-01'),
                                   'yyyy-mm-dd')
                            AND TO_DATE (
                                   NVL ('&C_DATE_TO', '2099-12-31'),
                                   'yyyy-mm-dd')

我的问题如果a.C_DATE为空,我该如何编写条件??? 现在,当a.C_DATe为空时,我没有记录

我写的是这样的

 AND (a.C_DATE BETWEEN TO_DATE (
                                   NVL ('&C_DATE_FROM', '1900-01-01'),
                                   'yyyy-mm-dd')
                            AND TO_DATE (
                                   NVL ('&C_DATE_TO', '2099-12-31'),
                                   'yyyy-mm-dd') OR a.C_DATE IS NULL)

但我等了很久......

2 个答案:

答案 0 :(得分:1)

也许这样?

AND ( 
   a.C_DATE BETWEEN 
       TO_DATE('1900-01-01', 'yyyy-mm-dd') AND TO_DATE ('2099-12-31', 'yyyy-mm-dd') 
   OR a.C_DATE IS NULL
    )

为什么这个激烈的日期范围?

答案 1 :(得分:1)

尝试一下:

AND (NVL(a.C_DATE, TO_DATE('1900-01-01','yyyy-mm-dd')) 
     BETWEEN TO_DATE (NVL('&C_DATE_FROM', '1900-01-01'), 'yyyy-mm-dd')
         AND TO_DATE (NVL('&C_DATE_TO',   '2099-12-31'), 'yyyy-mm-dd'))