在Oracle中計算兩個日期間隔的天數 月數和年數

2022-09-18 11:36:17 字數 1587 閱讀 6452

一、天數:

在oracle中,兩個日期直接相減,便可以得到天數;

select to_date('08/06/2015','mm/dd/yyyy')-to_date('07/01/2015','mm/dd/yyyy') from dual;

二、月數:

計算月數,需要用到months_between函式;

select months_between(to_date('01/31/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "months" from dual;

select months_between(to_date('01/01/2015','mm/dd/yyyy'),to_date('12/31/2014','mm/dd/yyyy')) "months" from dual;

select * from xuesheng where months_between(sysdate,t_birthday)/12>20;  查詢年齡超過20歲的學生

三、年數:

計算年數,是通過計算出月數,然後再除以12;select trunc(months_between(to_date('08/06/2015','mm/dd/yyyy'),to_date('08/06/2013','mm/dd/yyyy'))/12) from dual; 

to_number()  , to_number(varchar2 or char,』format model』)

add_months(), 

oracle中的常用的函式的總結:

1、add_months(x,y)或者add_months(times,months)函式:

(1)用途:這個函式用於計算在時間x之上機上y個月後的時間值,要是y的值為負數的話就是在

這個時間點之間的時間值(這個時間-y個月)。

(2)用法例項:

a:--從emp表查詢列出來公司就職時間超過24年的員工名單

select ename, hiredate

from emp

where hiredate <= add_months(sysdate, -288);--負數代表系統時間(sysdate)之前的24年的時間-288 = -24*12

b:--查詢出在員工'scott'入職一年**職的員工的資訊

select ename, a.hiredate, sal

from emp a, (select hiredate from emp where ename = 'scott') b

where a.hiredate > = add_months(b.hiredate, 12);

解析:上面的查詢思路如下

a:在from語句的後面將員工'scott'的入職時間查出放在乙個表裡,表的別名為b

b:將上面的b表再次作為查詢表

c:然後利用add_months(x,y)函式在b表的hiredate之後的12個月作為查詢條件

c:--查詢半年前的時間

select add_months(sysdate,-6) from dual;

解析:dual是oracle提供的最小功能表,它只有一行一列

來自:

js中 計算兩個日期間的工作日

起始日期,pattern 是正規表示式的界定符,pattern是要匹配的內容,只用於第乙個符號的匹配,g為全域性匹配標誌 var begindate new date 2013 01 01 replace g,結束日期 var enddate new date 2013 01 31 replace ...

SWIFT中計算兩個日期間隔多少小時

swift中如何計算兩個日期間隔多少個小時,其實幾句 就可以搞定了,very easy,在playground內輸入以下 如果要檢視兩個日期間隔多少天又該怎麼做呢?上面components的第乙個引數為hour那麼應該也有day吧,轉到定義內看到如下的靜態唯讀屬性,改下這個引數後就可以獲取間隔多少小...

oracle中計算兩個日期之間的差值

最近幾天在工作中用到了一項計算時間的功能,計算兩個時間之間的天數差,順道總結一下oracle中的語句 兩個date型別字段 start date,end date,計算這兩個日期的時間差 分別以天,小時,分鐘,秒,毫秒 天 round to number end date start date 小時...