Oracle 常用日期型函数

----------------------ORACLE 常用日期型函数 -----------------------------------------   

  

--当前日期和时间 (输出:2011-7-5 10:43:28)   

SELECT SYSDATE FROM DUAL;   

  

--本月最后一天 (输出:2011-7-31 10:44:45)   

SELECT LAST_DAY(SYSDATE) FROM DUAL;   

  

--Add_months(d,n) 当前日期d后推n个月,用于从一个日期值增加或减少一些月份    

--date_value:=add_months(date_value,number_of_months)   

SELECT ADD_MONTHS(SYSDATE, 2) FROM DUAL;   

  

--Months_between(f,s) 日期f和s间相差月数    

SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2011-03-08''yyyy-mm-dd'))   

  FROM DUAL;   

  

--NEXT_DAY(d, day_of_week) 返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天(1到7)。   

SELECT NEXT_DAY(TO_DATE('2011-07-05''YYYY-MM-DD'), 2) FROM DUAL;   

  

--current_date()返回当前会话时区中的当前日期    

--date_value:=current_date    

--column sessiontimezone for a15    

SELECT SESSIONTIMEZONE, CURRENT_DATECURRENT_TIMESTAMP FROM DUAL;   

  

--current_timestamp()以timestamp with time zone数据类型返回当前会话时区中的当前日期   

SELECT CURRENT_TIMESTAMP FROM DUAL;   

  

--dbtimezone()返回时区   

SELECT DBTIMEZONE FROM DUAL;   

  

--extract()找出日期或间隔值的字段值    

--date_value:=extract(date_field from [datetime_value|interval_value])    

SELECT EXTRACT(YEAR FROM TO_DATE('2010-03-08''yyyy-mm-dd')) YEAR,   

       EXTRACT(MONTH FROM SYSDATE) MONTH,   

       EXTRACT(DAY FROM SYSDATE) DAY  

  FROM DUAL;   

  

SELECT EXTRACT(YEAR FROM ADD_MONTHS(SYSDATE, 36)) " Years" FROM DUAL;   

  

--localtimestamp()返回会话中的日期和时间    

SELECT LOCALTIMESTAMP FROM DUAL;   

  

--上月末天:   

SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'yyyy-MM-dd') LASTDAY   

  FROM DUAL;   

  

--上月今天   

SELECT TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyy-MM-dd') PRETODAY FROM DUAL;   

  

--上月首天   

SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'yyyy-MM-dd') FIRSTDAY   

  FROM DUAL;   

  

--要找到某月中所有周五的具体日期    

SELECT TO_CHAR(T.D, 'YYYY-MM-DD')   

  FROM (SELECT TRUNC(SYSDATE, 'MM') + ROWNUM - 1 AS D   

          FROM DBA_OBJECTS   

         WHERE ROWNUM < 32) T   

 WHERE TO_CHAR(T.D, 'MM') = TO_CHAR(SYSDATE, 'MM'--找出当前月份的周五的日期    

   AND TRIM(TO_CHAR(T.D, 'Day')) = '星期五'  

  

--如果把where to_char(t.d, 'MM') = to_char(sysdate, 'MM')改成sysdate-90,即为查找当前月份的前三个月中的每周五的日期。  

猜你喜欢

转载自panhongbin100.iteye.com/blog/1596393