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