首页 > 解决方案 > Oracle中如何给日期加上一个季度

问题描述

我正在寻找一种在 oracle 中为日期添加四分之一的方法。

例如 28-FEB-21 应该变成 28-MAY-20

目前我正在使用 ADD_MONTHS('28-FEB-21',3) 添加一个季度,但将日期更改为 31-MAY-21

问候,

标签: sqloracle

解决方案


您可以使用:

LEAST(
  ADD_MONTHS( value, 3 ),
  ADD_MONTHS( TRUNC( value, 'MM' ), 3 )
    + ( value - TRUNC( value, 'MM' ) ) DAY TO SECOND
)

所以,如果你有测试数据:

CREATE TABLE table_name ( value ) AS
SELECT DATE '2019-11-30' FROM DUAL UNION ALL
SELECT DATE '2021-02-28' + INTERVAL '01:23:45' HOUR TO SECOND FROM DUAL;

然后查询:

SELECT value,
       LEAST(
         ADD_MONTHS( value, 3 ),
         ADD_MONTHS( TRUNC( value, 'MM' ), 3 )
           + ( value - TRUNC( value, 'MM' ) ) DAY TO SECOND
       ) AS value_plus_quarter
FROM   table_name;

输出:

价值 | VALUE_PLUS_QUARTER
:----------------- | :-----------------
2019-11-30 00:00:00 | 2020-02-29 00:00:00
2021-02-28 01:23:45 | 2021-05-28 01:23:45

db<>在这里摆弄


推荐阅读