Oracle - 获取参数日期值之前30天

时间:2017-01-27 10:00:38

标签: oracle

我看过类似的问题,但无法找到这个具体问题的答案。

我有一个使用名为CYCLEDATE的参数的存储过程,该参数将设置为2017年1月27日。

我需要的是能够在周期和周期-30天之间显示数据。从今天开始不是30天,而是用户输入的任何价值。

因此用户进入1月30日,数据显示1月1日至30日等。

此尝试为我抛出了错误。

AND TRAN.TL_PRCS_DATE BETWEEN CYCLEDATE AND CYCLEDATE - 30

2 个答案:

答案 0 :(得分:1)

sytnax for the BETWEEN expression是:

value BETWEEN lower_bound AND upper_bound

你需要交换边界:

AND TRAN.TL_PRCS_DATE BETWEEN CYCLEDATE - 30 AND CYCLEDATE

答案 1 :(得分:0)

根据Oracle documentation

  

[...]

的价值      

expr1 BETWEEN expr2 AND expr3是布尔表达式的值:

     

expr2 <= expr1 AND expr1 <= expr3

所以你需要

AND TRAN.TL_PRCS_DATE BETWEEN CYCLEDATE -30 AND CYCLEDATE

例如:

SQL> select 1 from dual where sysdate between sysdate - 30 and sysdate + 30;

         1
----------
         1

SQL> select 1 from dual where sysdate between sysdate + 30 and sysdate - 30;

no rows selected