Oracle数据库数值、日期函数的学习

一、数值函数的学习

  1)number(p,s)、number(p)、number(*,s),p的值为1-38之间。

  2)数值类型的兼容性

    --:numeric(p,s) 相当于number(p,s)

    --:decimal(p,s)或dec(p,s) 相当于number(p,s)

    --:integer或int(不能指定位数)相当于number(38)

    --:smallint相当于number(38)

    --:float相当于number

    --:double precision相当于number

    --:real相当于number

  3)四舍五入函数:round(p1,n)对p1进行四舍五入,n表示保留小数点的位数,不写默认为0,可以为负,表示保留到小数点前n位。

    eg:对数字3.14进行四舍五入,保留两位小数

      select round(3.14,2) from dual;

  4)数字截取函数trunc(p1,n)对p1进行截取,保留小数点后n位,n为负数保留到小数点前n为。

    eg:对数字3.14进行截取,保留小数点后两位

      select trunc(3.14,2) from dual;

  5)取余函数mod(m,n)表示m对n做除法运算,取余数。

    eg:计算100对3取余

      select mod(100,3) from dual;

  6)取整函数

    --:向上取整ceil(m)表示取大于等于m的最小整数

    --:向下取整floor(m)表示取小于等关于m的最大整数

    eg:分别对-3.4进行向上和向下取整

      select ceil(-3.14),ceil(4.5) from dual;

二、日期函数的学习

  1)

   --:to_char(p1,p2) 表示将日期p1按照p2的格式转换成字符串类型,如果格式中有汉字就要用双引号引起来。

     --:to_date(p1,p2) 表示字符串p1按照p2的格式转成日期类型。

  2)last_day(p1) 查看p1月份中的最后一天的日期,p1为date类型。

    eg:查询出生年月日的那个月的最后一天

      select last_day(to_date('1997-3-6','yyyy-mm-dd')) from dual;

  3)add_month(p1,n) 在日期p1的基础上增加n个月返回n个月后的日期,n可以为小数,会截取到整数增加 n也可以为负,减n个月。

    eg:推算2018年4月15日的一个月后的日期

      select add_month(to_date('2018-4-15','yyyy-mm-dd'),1) from dual;

  4)month_between(p1,p2) 计算两个日期p1和p2之间相差的月份,会存在小数情况,计算p1-p2。

    eg:计算当前系统时间和出生年月日相差的月份,保留一位小数。

      select round(month_between(sysdate,to_date('1997-3-6','yyyy-mm-dd')),1) from dual;

  5)next_day(date,num)  表示查看参数date的下一个周几的日期,date表示某一日期,num:1~7。

    eg:查看当前系统时间的下一个周日时间

     select next_day(sysdate,1) from dual;

  6)

    --:least(p1,p2,p3.....)多个参数比较显示最小的数据。

    --:greatest(p1,p2,p3....)多个参数比较显示最大的数据。

    要求:参数为同一类型,或者默认转换成第一个参数的类型,字符串比较是比较字符的ascii码。

    eg:统计3,2,1,4,5中的最大值

      select greatest(3,2,1,4,5) from dual;

  7)extract(p1 from p2) 表示从日期p2中提取分量p1,日期的分量:year、month、day、hour、minute、second,日期类型关键字:sysdate和systimestamp。

    eg:分别从sysdate和systimestamp中提取分量年

      select extract(year from sysdate),extract(yaer from systimestamp) from dual; 

    

原文地址:https://www.cnblogs.com/lyr999736/p/8850326.html