分享

oracle 日期常用函数 (ADD_MONTHS,LAST_DAY,NEXT_DAY,MONTHS_BETWEEN,NEW_TIME,ROUND,TRUNC)

 哈飞扬 2015-10-15
日期运算函数  
 
ADD_MONTHS(d,n)  
 --时间点d再加上n个月  
 
 ex.  
  select sysdate, add_months(sysdate,2) aa from dual;  
 
  SYSDATE    AA  
   ---------- ----------  
   21-SEP-07  21-NOV-07  
    
 LAST_DAY(d)  
  --时间点d当月份最后一天  
  
  ex.  
   select sysdate, LAST_DAY(sysdate) LAST_DAY from dual;  
  
   SYSDATE    LAST_DAY  
   ---------- ---------  
   21-SEP-07  30-SEP-07  
  
 NEXT_DAY(d,number)  
  --◎ 时间点d开始,下一个星期几日期  
  --◎ 星期日 = 1  星期一 = 2  星期二 = 3  
  --   星期三 = 4  星期四 = 5  星期五 = 6  星期六 = 7  
  
  ex.  
   select sysdate, NEXT_DAY(sysdate,2) aa from dual;  
  
   SYSDATE    AA  
   ---------- ----------  
   21-SEP-07  24-SEP-07  
    
 MONTHS_BETWEEN(d1,d2)  
  --计算d1与d2相隔月数   
   
  ex.  
   select trunc(MONTHS_BETWEEN(to_date('20071101','yyyymmdd'),  
          to_date('20070820','yyyymmdd'))) aa   
   from dual;  
  
         AA  
   ----------  
          2  
    
 NEW_TIME(d,c1,c2)  
  --转换新时区   
   
  ex.  
   select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') 台北,   
          to_char(NEW_TIME(sysdate,'EST','GMT'),'YYYY/MM/DD HH24:MI:SS') 格林威治   
   from dual;  
  
   台北                 格林威治  
   -------------------- -------------------  
   2007/09/21 14:36:53  2007/09/21 19:36:53  
    
 ROUND(d[,fmt])  
  --◎ 对日期作四舍五入运算   
  --◎ 月四舍五入以每月15号为基准
  --◎ 年四舍五入以每年6月为基准
   
  ex.  
   select sysdate, ROUND(sysdate,'year') aa from dual;  
  
   SYSDATE    AA  
   ---------- ----------  
   21-SEP-07  01-JAN-08  
     
   select sysdate, ROUND(sysdate,'month') aa from dual;  
  
   SYSDATE    AA  
   ---------- ----------  
   21-SEP-07  01-OCT-07  
     
 TRUNC(d[,fmt])  
   --对日期作截取运算   
   
  ex.  
   select sysdate, TRUNC(sysdate,'year') aa from dual;  
  
   SYSDATE    AA  
   ---------- ----------  
   21-SEP-07  01-JAN-07  
     
   select sysdate, TRUNC(sysdate,'month') aa from dual;  
  
   SYSDATE    AA  
   ---------- ----------  
   21-SEP-07  01-SEP-07


Oracle在日期使用上允许极大的灵活性。由于可以在日期字段存储时间和日期,从而有函数可以既引用日期又引用时间。
Oracle 所提供的一些日期函数如下所示。
1. SYSDATE
返回当前的日期和时间。
示例
SELECT sysdate FROM dual;

SYSDATE
----------
05-3月 -03

2. ADD_MONTHS(d, no_of_month)
当前日期"m"后推"no_of_month" 个月。参数"no_of_month"可为任何整数。
示例
SELECT add_months(sysdate,2) FROM dual;

ADD_MONTHS
----------
05-5月 -03

SELECT add_months(sysdate,-2) FROM dual;

ADD_MONTHS
----------
05-1月 -03

3. LAST_DAY(month_day)
返回变量"month_day"中所指定月份的最后一天的日期。
示例
SELECT last_day(sysdate) FROM dual;

LAST_DAY(S
----------
31-3月 -03

4. MONTHS_BETWEEN(d1, d2)
返回日期 d1 和 d2 之间的月份数。如果 d1 晚于 d2,结果为正,否则返回负数。
示例
SELECT months_between(sysdate,to_date('20030101','YYYYMMDD')) FROM dual;

MONTHS_BETWEEN(SYSDATE,TO_DATE('20030101','YYYYMMDD'))
------------------------------------------------------
                                           2.15773932

5. NEXT_DAY(d, day_of_week)
返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。
示例
-- 2003.3.2 是星期日
SELECT next_day(to_date('20030226','YYYYMMDD'),1) FROM dual;

NEXT_DAY(T
----------
02-3月 -03

4。今年一月一日

select last_day(add_months(sysdate,-to_char(sysdate,'mm')))+1 from dual; 

 最简单的是

select trunc(sysdate,'y') from dual;


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多