ROUND函数依据指定的小数精度对数值进行舍入运算。返回依据有效数字以指定的小数精度进行上舍入或者下舍入的值。如果指定的的小数精度为n,则要舍入的有效数据在小数点右边(n+1)个位置。如果n为负数,那么要舍入的有效数字在小数点右边n个位置。如果有效数据的数据大于或者等于5,就进行“上舍入”,其他情况进行“下舍入”。
ROUND函数有两个参数。语法:ROUND(source number,decimal precision)。source number参数表示任何数字值。decimal precision参数指定舍入的精度,它是可选的。如果没有指定decimal precision参数,则舍入的默认精度是0,也就是说将源数字舍入为最接近的整数。
select round(1601.916,1) from dual;
select round(1601.916,2) from dual;
select round(1601.916,-1) from dual;
select round(1601.916,-3) from dual;
select round(1601.916) from dual;
TRUNCTRUNC函数依据指定的小数精度对数据执行截取运算。数字截取不同于舍入,如果小数精度的正数的话,最后的值依据指定的小数精度删除数字,并不进行向上或者向下舍入。然而,如果指定的小数精度(n)为负数,输入值从小数点左边第n个数位开始向后归0。
TRUNC函数有两个参数。语法:TRUNC(source number,decimal precision)。Source number表示任何数字值。Decimal precision指定截取的精度,它是可选的。如果没有指定decimal precision参数,那么默认精度为0,即将source number截取到最接近的整数。
select trunc(1601.916,1) from dual;
select trunc(1601.916,2) from dual;
select trunc(1601.916,-1) from dual;
select trunc(1601.916,-3) from dual;
select trunc(1601.916) from dual;
MODMOD函数返回除法运算的余数。提供两个数——被除数和除数,执行除法运算。如果除数是被除数的因数,MOD就返回0,因为没有余数。如果除数等于0,则返回no division by zero错误,MOD函数也返回0。如果除数大于被除数,那么MOD函数返回被除数作为结果。
MOD函数有两个参数。语法:MOD(dividend,divisor)。dividend和divisor参数都可以表示数字字面值、列或者表达式。可以是正数也可以是负数。
select mod(6,2) from dual;
select mod(5,3) from dual;
select mod(7,35) from dual;
select mod(5.2,3) from dual;
select mod(-5,3) from dual;
MOD函数通常用来区分奇数和偶数。
四、日期函数 SYSDATESYSDATE函数没有参数,它返回数据库服务器当前的系统日期和时间。
select sysdate from dual;
日期运算Date1-Date2=Num1
可以从另一个日期中减去日志。这两个日期项之间的差值表示它们之间的天数。可以将所有数字(包括小数)添加到日期项或者从日期项中减去。在该上下文中,数字表示天数。数字和日期项之间的和或者差值总是返回日期项。不允许相加、相乘或者相除两个日期项。
select to_date('31-jan-01')-to_date('01-jan-01') from dual;
select sysdate + 1 from dual;
MONTHS_BETWEENMONTHS_BETWEEN函数返回表示两个强制的日期参数之间月数的数值。语法:MONTHS_BETWEEN(date1,date2)。计算date1和date2之间朋份的差值(每月31天)。如果date1在date2之前就反加负数。这两个日期参数之间的差值可能由整数和小数部分组成。整数表示这两个日期之间的朋数。小数部分表示计算年和月之间整数差值这后剩余的天数和时间,以31天的月份为基础。如果要比较的日期的日组成部分相同或者是各自月份的最后一天,那么就返回没有小数部分的整数。
select months_between(sysdate,sysdate-31) from dual;
select months_between('29-mar-2008','28-feb-2008') from dual;
select months_between('29-mar-2008','28-feb-2008')*31 from dual;
ADD_MONTHSADD_MONTHS函数返回日期项,这个日期项通过将指定月数添加到给定日期计算得出。