如何在Oracle SQL中基于月份减去年份

时间:2013-07-06 08:12:59

标签: oracle oracle11g oracle10g

我有一个查询来检索当前月份和上个月的数据.add_months(month,-1)用于获取上个月的数据。但是1月的情况有一年的问题。 如果当前月份是2013年1月,我需要2012年12月作为上个月。但它显示2013年12月。 我怎么能纠正它?

见查询:

SELECT * 
    FROM ot_day_coll_head, ot_day_coll_items,OM_SALESMAN
    WHERE olcd_olch_sys_id = olch_sys_id
       AND olch_sm_code=SM_CODE
       AND to_char(olch_doc_dt, 'Month')=TO_CHAR(ADD_Months(to_date('January','MM'),-1),'Month') 
       AND to_char(olch_doc_dt,'YYYY')='2013';

1 个答案:

答案 0 :(得分:1)

您的查询强制它仅查看2013.您无需单独比较年份和月份元素:

   AND to_char(olch_doc_dt, 'YYYY-MM')
       = TO_CHAR(ADD_Months(to_date('2013-01','YYYY-MM'),-1),'YYYY-MM')

据推测,您只需将sysdate替换为to_date()来电,因为您的问题是指当前月份。

快速SQL Fiddle