1

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

1 回答 1

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 小提琴

于 2013-07-06T08:29:25.180 回答