oracle 函数: trunc(sysdate)和months_between() 和 add_months()

1,234 阅读1分钟

trunc()

ORACLE中TRUNC是截取或者对数字来说四舍五入的函数 

用在日期类型上,就是截取到日或时间 

e.g

1, SELECT TRUNC(SYSDATE) FROM DUAL; 

    默认是截取系统日期到日,得到2012-12-19 

2,  比如值为"2012-12-19 14:30:50"的日期变量

     TRUNC(SYSDATE)得到 2012-12-19 , 和TRUNC(SYSDATE,'DD')一样 

     TRUNC(SYSDATE,'YYYY'),得到2012-1-1 

     TRUNC(SYSDATE,'MM'),得到2012-12-1 

     TRUNC(SYSDATE,'DD'),得到2012-12-19 

     TRUNC(SYSDATE,'HH')或HH24,得到2012-12-19 14:00:00 

     TRUNC(SYSDATE,'MI'),得到2012-12-19 14:30:00 

     TRUNC(SYSDATE,'SS'),是会报错的,

    直接用SYSDATE不用TRUNC 

另外说明一下,截取后得到的仍为date数据类型

MONTHS_BETWEEN (date1, date2)

MONTHS_BETWEEN (date1, date2) 用于计算date1和date2之间有几个月。

如果date1在日历中比date2晚,那么MONTHS_BETWEEN()就返回一个正数。

如果date1在日历中比date2早,那么MONTHS_BETWEEN()就返回一个负数。

如果date1和date2日期一样,那么MONTHS_BETWEEN()就返回一个0。 

add_months(time,months):

 可以得到某一时间之前或之后n个月的时间; 

 查询当前时间2个月以前的时间: select add_months(sysdate,-2) from dual; 

 查询当前时间2个月以后的时间: select add_months(sysdate,2) from dual;