0

在 BI-PUBLISHER 中,我有两个参数STARTDATEENDDATE

表中有一个字段ACTIVE_DATE将用于上述参数。

我在查询中使用以下条件:

trunc(active_date) between NVL(:P_Active_Date, trunc(active_date))
and NVL(:P_Close_Date, trunc(active_date)

如果两个参数都为空,它应该选择日期的所有范围。

但是当我应用这些参数时,它并没有显示正确的结果。即使我选择了这两个参数,它仍然没有显示正确的结果。

应该怎么做?

4

2 回答 2

0

如果您的日期属性在同一天花费了不同的时间,您可以这样做:

where
trunc(active_date)
between to_date( ( NVL(:p_Active_Date, trunc(active_date)) ),'DD/MM/YYYY')
and  to_date( (NVL(:p_Close_Date, trunc(active_date) )  ),'DD/MM/YYYY')

我有一个这样的问题,查询没有显示我输入的参数范围内的记录。

希望这可以帮助。

于 2016-01-29T08:27:37.983 回答
0

尝试

WHERE
(:P_START_DATE IS NULL OR trunc(ACTIVE_DATE) > :P_START_DATE )
AND
(:P_END_DATE IS NULL OR trunc(ACTIVE_DATE) < :P_END_DATE )

通常参数是一个日期,但表格包含开始/结束日期。

WHERE
(:P_ACTIVE_DATE IS NULL  
OR ((START_DATE IS NULL OR START_DATE <= :P_ACTIVE_DATE )
AND (END_DATE IS NULL OR END_DATE > :P_ACTIVE_DATE )))

这些都不适合您的需求,但您会了解 AND/OR 如何与 IS NULL 一起使用。

于 2016-08-30T19:09:30.730 回答