Oracle SQL - 选择月 - 当前年(-1)到月 - 当前年之间的日期

时间:2012-04-30 13:15:23

标签: sql oracle date-arithmetic

我有一个包含日期的列以及表中的其他列。我希望能够:

显示与上一年的9月1日到当年7月30日的日期相匹配的所有行。

我知道有些事情需要做,只是不确定日期的具体语法..

SELECT * FROM xx
WHERE ASM_DATE BETWEEN TRUNC(SYSDATE-1,'YY') AND TRUNC(SYSDATE,'YY');

这就是我到目前为止所拥有的......

我知道我可以使用SYSDATE和'YYYY'获取当前年份,然后在前一年使用-1,我不确定如何指定除此之外的月份。任何帮助都会很棒。

3 个答案:

答案 0 :(得分:9)

SELECT
  *
FROM
  xxx
WHERE
      ASM_DATE >= ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'), -12)
  AND ASM_DATE <  ADD_MONTHS(TRUNC(SYSDATE, 'MONTH'),   1)

答案 1 :(得分:3)

看一下oracle ADD_MONTHS函数。

oracle reference.

中有完整的日期时间功能列表

答案 2 :(得分:1)

说,当前月份 2015年4月

上个月的一年数据(从 01-FEB-2014 2015年3月31日):

SELECT *
FROM xx
WHERE 
ASM_DATE BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -14) 
AND
LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1))

一年的数据,包括当月(从 01-MAR-2014 30-APR-2015 ):

SELECT *
FROM xx
WHERE 
ASM_DATE BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -13) 
AND
LAST_DAY(TRUNC(SYSDATE, 'MM'))