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);//输出减去后的时间
如果帮到你请点击采纳呀