我正在尝试实现以下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;
答案 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)