oracle 12c中的ADD_MONTHS sql查询

时间:2017-10-10 15:48:25

标签: sql oracle oracle12c

我正在尝试实现以下SQL查询

select SOURCE_SYSTEM,
       START_DATE,
       OWNER,
       SUMMARY,
       DETAIL 
  from CICUSTEXP.ACTIVITIES 
 where SOURCE_PARENT_ID = '001o0000006P8JH' 
   AND START_DATE >= ADD_MONTHS(SYSDATE, -1) 
 ORDER BY START_DATE DESC;

此处STARTDATE的类型为TIMESTAMP(6)。现在我想根据我将要传递的月份获取数据,如果我想获得过去3个月的数据,我应该在这里传递什么?或者如果想从今天开始接下来的12个月的数据,我应该从这里过去。我很困惑。

更新: 从下面的对话中,我有以下查询来获取未来12个月的数据。不确定它们是否正确。

select SOURCE_SYSTEM,
       START_DATE,
       OWNER,SUMMARY,
       DETAIL 
  from CICUSTEXP.ACTIVITIES 
 where SOURCE_PARENT_ID = '001o0000006P8JH' 
   AND START_DATE BETWEEN ADD_MONTHS(SYSDATE, 0) AND ADD_MONTHS(SYSDATE, 12) 
 ORDER BY START_DATE DESC;

为了获取过去3个月的数据,我有以下查询。

select SOURCE_SYSTEM,
       START_DATE,
       OWNER,SUMMARY,
       DETAIL 
  from CICUSTEXP.ACTIVITIES 
 where SOURCE_PARENT_ID = '001o0000006P8JH' 
   AND START_DATE BETWEEN ADD_MONTHS(SYSDATE, -3) AND ADD_MONTHS(SYSDATE, 0) 
 ORDER BY START_DATE DESC;

1 个答案:

答案 0 :(得分:0)

您好,您可以试试这个:

select SOURCE_SYSTEM,
       START_DATE,
       OWNER,
       SUMMARY,
       DETAIL 
  from CICUSTEXP.ACTIVITIES 
 where SOURCE_PARENT_ID = '001o0000006P8JH' 
   AND START_DATE >= ADD_MONTHS(SYSDATE, -n)
 ORDER BY START_DATE DESC;

以这种方式选择开始日期大于n个月前的所有行。

如果您想在将来某个月之前选择所有行:

AND START_DATE <= ADD_MONTHS(SYSDATE, n)

最后,如果你想要两个日期之间的所有行

AND START_DATE BETWEEN ADD_MONTHS(SYSDATE, -n) MONTH AND ADD_MONTHS(SYSDATE ,n)