oracle對日期date類型操作的函數
無論是DATE還是timestamp都可以進行加減操作
- 加一個簡單的數來增加天
- max,min來求其最大最小日期
- avg,sum就只能先轉成數字類型才可用
- 使用內置函數add_months來增加年和月
- 使用內置函數numtoyminterval增加年,月
- 使用內置函數numtodsinterval增加小時,分鐘和秒
umtoyminterval函數——數字轉換函數
語法:NUMTOYMINTERVAL ( n , ‘char_expr‘ )
char_expr:日期描述,可以是YEAR和MONTH
作用:可以將數字轉換成相應的日期單位時間
NUMTOYMINTERVAL ( 1, ‘MONTH‘ ) 表示一個月
numtodsinterval函數——數字轉換函數
語法:NUMTOYMINTERVAL ( n , ‘char_expr‘ )
char_expr:日期描述,可以是day、hour、minute、second
作用:可以將數字轉換成相應的日期單位時間
NUMTOYMINTERVAL ( 1, ‘day‘ ) 表示一天
NUMTOYMINTERVAL ( 1, ‘hour‘ ) 表示一個小時
通常當我們使用add_month添加月時,如果輸入是本月月底的日期,那麽得到的也是月底的日期,
比如add_months(to_date(‘2007-02-28‘,‘yyyy-mm-dd‘),1)得到的就會是‘2007-03-31‘,而不是‘2007-03-28‘。
例子示範
對當前日期增加一個小時:
SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from dual ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
對當前日期增加50分種
SQL> select sysdate, sysdate+numtodsinterval(50,’minute’) from dual ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:39:12 2010-10-14 22:29:12
對當前日期增加45秒
SQL> select sysdate, sysdate+numtodsinterval(45,’second’) from dual ;
SYSDATE SYSDATE+NUMTODSINTE
——————- ——————-
2010-10-14 21:40:06 2010-10-14 21:40:51
對當前日期增加3天
SQL> select sysdate, sysdate+3 from dual ;
SYSDATE SYSDATE+3
——————- ——————-
2010-10-14 21:40:46 2010-10-17 21:40:46
對當前日期增加4個月
SQL> select sysdate, add_months(sysdate,4) from dual ;
SYSDATE ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:41:43 2011-02-14 21:41:43
當前日期增加2年
SQL> select sysdate, add_months(sysdate,12*2) from dual ;
SYSDATE ADD_MONTHS(SYSDATE,
——————- ——————-
2010-10-14 21:42:17 2012-10-14 21:42:17
timestamp的操作方法與上面類似;
求兩個日期之差:
例:求2007-5-23 21:23:34與當前時間之間的差值。
SQL> select sysdate-to_date(’20070523 21:23:34′,’yyyy-mm-dd hh24:mi:ss’) dt from
dual ;
DT
———-
1240.01623
oracle對日期date類型操作的函數