oracle NVL 在日期和之间

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/19977770/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 02:04:58  来源:igfitidea点击:

NVL in BETWEEN date AND

oracledatebetween

提问by Przemek

Ok have a lot of records and mayebe one order number = 11233.

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

part of code which is not correct

不正确的代码部分

 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')

My question How Can I write a condition if a.C_DATE is null ??? Now I dont have a record when a.C_DATe is null

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

I wrote sth like this

我是这样写的

 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)

but I'm waiting for a long time....

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

采纳答案by Mt. Schneiders

Give this a try:

试试这个:

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'))

回答by nabuchodonossor

maybe this way?

也许这样?

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
    )

why this larage date range?

为什么这个大日期范围?