【Oracle】【21】計算兩個日期間隔的天數、月數和年數


正文:

(1)天數

兩個日期直接相減

--Oracle中兩個日期相差天數--
select TO_NUMBER(TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss')) from dual;
-- 5

(2)月數

要用到months_between函數

-- Oracle兩個日期的相差月數 --
--1)月份都是最后一天,A日期 > B日期 ,返回整數 ---
select months_between(TO_DATE('2018-6-30','yyyy-mm-dd hh24:mi:ss'),TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))  from dual;
-- 1

--2)月份都是最后一天,B日期 > A日期 ,返回負數 ---
select months_between(TO_DATE('2018-4-30','yyyy-mm-dd hh24:mi:ss'),TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss')) from dual;
-- -1

--3)月份天數不一樣,A日期 > B日期 ,返回帶小數的數字---
select months_between(TO_DATE('2018-6-25','yyyy-mm-dd hh24:mi:ss'),TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss')) from dual;
-- 0.8064516...

(3)其他:秒數,分種數,小時數,年數

直接復用上面兩種方法即可

-- Oracle中兩個日期相差小時數 --
select TO_NUMBER((TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))*24) from dual;
-- 得到:120

-- Oracle中兩個日期相差分鍾數 --
select TO_NUMBER((TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))*24*60) from dual;
-- 得到:7200

-- Oracle中兩個日期相差秒數 --
select TO_NUMBER((TO_DATE('2018-6-5','yyyy-mm-dd hh24:mi:ss')- TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'))*24*60*60) from dual;
-- 得到:43200

-- Oracle兩個日期的相差年份 --
select ((months_between(TO_DATE('2018-5-31','yyyy-mm-dd hh24:mi:ss'),TO_DATE('2016-5-31','yyyy-mm-dd hh24:mi:ss')))/12) from dual;
-- 得到:2

參考博客:

oracle中計算兩個日期的相差天數、月數、年數、小時數、分鍾數、秒數等 - 小小邪 - 博客園
https://www.cnblogs.com/xielong/p/9122254.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM