我有一个查询来检索当前月份和上个月的数据.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';
答案 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。