Oracle ADD_MONTHS()函数进行月份加减计算
1 |
|
关于 ADD_MONTHS()函数问题:不管加减月,如果当前日期是当月最后一天,那么结果也会是那个月的最后一天。
比如:0228 减1月就是 0131(而不是0128),加1月就是 0331
所以:0328 减1月是 0228,再加1月就是 0331,会与最初值不一致,查询时要避免同时有加减操作,以减小数据偏差。
比如以下sql,做了加一个月再减一个月的操作,理论上结果数据应该是和入参日期一致,但实际不是。
1 |
|
比如以下的需求sql:
查询当月和上个月的同期值:(入参是当月时间,查询上月数据时条件进行了一次 ADD_MONTHS(-1) 计算,当月数据要和上月数据通过时间关联,如果在上月数据的查询结果中对时间进行 ADD_MONTHS(+1) 计算,结果数据误差就会变大。所以需要做的应该是对当月数据的查询结果做 ADD_MONTHS(-1) 计算,数据误差就会小一点)
Oracle ADD_MONTHS()函数进行月份加减计算
https://binbiubiu.github.io/20210818120000/