您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PL / SQL:两个日期之间的差异

PL / SQL:两个日期之间的差异

使用INTERVAL DAY TO SECOND类型获取格式为+D HH24:MI:SS.FF6

CREATE OR REPLACE PROCEDURE DATECALCULATOR(
  DATE_1 IN DATE,
  DATE_2 IN DATE
) AS
  DATEDIFF INTERVAL DAY(9) TO SECOND;
BEGIN
  DATEDIFF= (DATE_1- DATE_2) DAY(9) TO SECOND;
  DBMS_OUTPUT.PUT_LINE('Date difference is: ' || DATEDIFF );
END;
/

或者,使用MONTHS_BETWEEN函数获取格式上的差异YYYY-MM-DD

CREATE OR REPLACE PROCEDURE DATECALCULATOR(
  range_end   IN DATE,
  range_start IN DATE
) AS
  DIFF NUMBER  := TRUNC( MONTHS_BETWEEN( DATE_1, DATE_2 ) ) - 1;
  dt   DATE    := ADD_MONTHS( range_start, diff );
  d    INTEGER := TRUNC( range_end - dt );
  dy   INTEGER := EXTRACT( DAY FROM LAST_DAY( dt ) );
  m    INTEGER;
  y    INTEGER;
BEGIN
  IF d > dy THEN
    diff := diff + 1;
    d    := d - dy;
  END IF;
  m := MOD( TRUNC( diff ), 12 );
  y := TRUNC( diff / 12 );

  DBMS_OUTPUT.PUT_LINE('Date difference is: '
    || TO_CHAR( y, '0009' ) || '-' || TO_CHAR( m, 'FM09' ) || '-' || TO_CHAR( d, 'FM09' ) 
  );
END;
/
SQLServer 2022/1/1 18:52:43 有312人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶