java怎么获取当前年份的前两个月前日期(年份保持不变)

问题遇到的现象和发生背景

oracle数据库,求两个月前的日期,但如果输入的是一月份,则两个月前则会来到21年11月,但我只想让它最多减到当年的一月一号

SELECT
    TO_CHAR( TRUNC( ADD_MONTHS( TO_DATE( '2022-05-10', 'yyyy-MM-dd' ), - 2 ), 'mm' ), 'yyyy-MM-dd' ) 
FROM
    dual
'2022-03-01'

如果为一月:

SELECT
    TO_CHAR( TRUNC( ADD_MONTHS( TO_DATE( '2022-01-10', 'yyyy-MM-dd' ), - 2 ), 'mm' ), 'yyyy-MM-dd' ) 
FROM
    dual

'2021-11-01'

想要的效果为:

'2022-01-01'

(最多减到当年的一月一)

用greatest函数取你取出来的这个日期和当前的一月一日之间的最大值即可

SELECT
    TO_CHAR(greatest( TRUNC( ADD_MONTHS( TO_DATE( '2022-01-10', 'yyyy-MM-dd' ), - 2 ), 'mm' ),trunc(date'2022-01-10','yyyy')), 'yyyy-MM-dd' ) 
FROM
    dual

        String time = "2022-03-01";   //时间
        DateTimeFormatter f1 = DateTimeFormatter.ofPattern("yyyy.MM.dd");
        LocalDate preData = LocalDate.parse(time).plusMonths(-2);  //减去两个月
        String newTime = time.split("-")[0] + "-01-01";    //减去后的时间
        String[] array = preData.toString().split("-");
        if (Integer.parseInt(array[0]) == Integer.parseInt(time.split("-")[0])) {
            newTime=preData.toString();
        }
        System.out.println(newTime);//输出减去后的时间

如果帮到你请点击采纳呀