我有一个包含日期的列以及表中的其他列。我希望能够:
显示与上一年的9月1日到当年7月30日的日期相匹配的所有行。
我知道有些事情需要做,只是不确定日期的具体语法..
SELECT * FROM xx
WHERE ASM_DATE BETWEEN TRUNC(SYSDATE-1,'YY') AND TRUNC(SYSDATE,'YY');
这就是我到目前为止所拥有的......
我知道我可以使用SYSDATE和'YYYY'获取当前年份,然后在前一年使用-1,我不确定如何指定除此之外的月份。任何帮助都会很棒。
答案 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函数。
中有完整的日期时间功能列表答案 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'))