如何使用互斥的where语句选择数据

时间:2019-01-17 12:01:18

标签: sql oracle

我要基于条件执行select语句,更改互斥的where条件

我想根据日期从表中获取数据。如果当前日期是16日,那么我希望获得当月1-12日的数据,如果它是4日,那么我希望获得前一个月的数据。我不知道如何使用,如果或何时与此。我如何添加条件,根据该条件我可以执行which语句之一。我正在尝试自动执行将在每月16日和4日运行的报告,并且将要添加到报告中的数据如前所述。我正在使用Oracle数据库

1 个答案:

答案 0 :(得分:1)

使用ANSI / ISO语法的逻辑如下所示:

where (extract(day from current_date) = 16 and
       extract(month from datecol) = extract(month from current_date) and extract(year from datecol) = extract(year from current_date)
      ) or
      (extract(day from current_date) = 4 and
       extract(month from datecol) = extract(month from current_date - interval '1 month') and extract(year from datecol) = extract(year from current_date - interval '1 month')
      )

当然,日期函数因数据库而异,因此可能需要针对您的特定数据库进行调整。