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_DATE, CURRENT_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,即为查找当前月份的前三个月中的每周五的日期。

 

你可能感兴趣的:(oracle)