zoukankan      html  css  js  c++  java
  • 【Oracle函数】数字,日期,转换,字符串

    -----------------------------oracle数据库函数-------------------------------------
    ---数学函数***
    select abs(-1) from dual;
    --向上取整
    select ceil(2.5)from dual;
    select ceil(-2.4)from dual;
    select ceil(-2.6)from dual;

    --向下取整
    select floor(2.5) from dual;
    select floor(-2.5) from dual;
    select floor(-2.6) from dual;

    --四舍五入 注意:4 5之分
    select round(2.4)from dual;
    select round(2.5)from dual;
    select round(-2.4)from dual;
    select round(-2.5)from dual;

    --幂 2^3 第一个参数是底数 第二个参数是指数
    select power(2,3)from dual;

    --平方根
    select sqrt(3)from dual;

    --截断:用于截取小数位数 
    --第一个参数是目标参数 第二天参数表示保留的小数位数
    select trunc(123.456,2) from dual;
    select trunc(123.456,0) from dual;

    --取模 取余
    select mod(10,3) from dual;

    ---日期转换函数*****

    --时间格式
    --yyyy-MM-dd HH:mi:ss
    --HH默认24小时制 1-23:59:59
    --HH12表示12小时制 1-12

    --to_char()将日期转换成字符串
    select sysdate from dual;
    select to_char(sysdate,'yyyy-MM-dd HH:mi:ss') from dual;

    --to_date()将字符串转换成日期
    select to_date('2017-11-2','yyyy-MM-dd HH:mi:ss') from dual;

    select * from ttt_demo01;
    insert into ttt_demo01 values(102,'scott',200.99,to_date('1992-11-2','yyyy-MM-dd HH:mi:ss'));

    --转换含有数字的字符串
    select to_number('1233.456') from dual;

    SELECT TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH:MI:SS') FROM DUAL;
    --添加了时区
    SELECT TO_TIMESTAMP_TZ('2016-12-12 12:23:34 8:00', 'YYYY-MM-DD HH24:MI:SS TZH:TZM') FROM DUAL;


    ---日期操作函数*****

    --截取目标日期里的时间,比如获取当前系统时间的年、月、日
    --注意在截取当前系统时间的年月日,可以直接写成 year/month/day from sysdate
    --但是hour minute second不可以这么写,需要先转换成字符串,再转换成日期
    select extract( year from sysdate) from dual;
    select extract( month from sysdate) from dual;
    select extract( day from sysdate) from dual;

    select extract( second from to_timestamp(to_char(sysdate,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS')) from dual;

    select extract(hour from TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH24:MI:SS')) from dual;
    select extract(minute from TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH24:MI:SS')) from dual;
    select extract(second from TO_TIMESTAMP('2016-12-12 12:23:34', 'YYYY-MM-DD HH24:MI:SS')) from dual;

    --计算月差:两个日期之间相差的月数
    --注意:计算结果是第一个参数减第二个参数
    select months_between(sysdate,to_date('1995-11-11','YYYY-MM-DD HH:mi:ss'))from dual;

    select months_between
    (to_date('1980-11-1','YYYY-MM-DD HH:mi:ss'),
    to_date('1995-11-11','YYYY-MM-DD HH:mi:ss'))from dual;

    --添加月数
    select add_months(sysdate,2)from dual;
    select add_months(to_date('2017-11-1','YYYY-MM-DD HH:mi:ss'),-13)from dual;

    --获取当前系统时间以后的时间(星期)
    --一周的组合以下周的日期(本周已过的日期或者正在过的日期)
    --和本周的日期(本周还未过的日期)加起来
    select next_day(sysdate,'Monday') from dual;--下周一
    select next_day(sysdate,'Tuesday') from dual;--下周二
    select next_day(sysdate,'Wednesday') from dual;--下周三
    select next_day(sysdate,'Thursday') from dual;--本周四
    select next_day(sysdate,'Friday') from dual;--本周五
    select next_day(sysdate,'Saturday') from dual;--本周六
    select next_day(sysdate,'Sunday') from dual;--本周日

    --每个月的最后一天
    select last_day(sysdate)from dual;
    select last_day(to_date('2016-2-1','YYYY-MM-DD'))from dual;
    --对日期的四舍五入
    select round(sysdate,'year') from dual;
    select round(sysdate,'month') from dual;
    --对年的四舍五入 分界点是6月和7月
    select round(to_date('2017-6-1','YYYY-MM-DD'),'year') from dual;
    select round(to_date('2017-7-1','YYYY-MM-DD'),'year') from dual;
    --对月的四舍五入 分界点是15日和16日
    select round(to_date('2017-6-1','YYYY-MM-DD'),'month') from dual;
    select round(to_date('2017-6-15','YYYY-MM-DD'),'month') from dual;
    select round(to_date('2017-6-16','YYYY-MM-DD'),'month') from dual;

    select round(to_date('2016-2-15','YYYY-MM-DD'),'month') from dual;
    select round(to_date('2016-2-16','YYYY-MM-DD'),'month') from dual;

    --截取日期
    --此处的day表示星期几
    --获取离当前时间最近的星期日(已经过了的)
    select trunc(sysdate,'day')from dual;
    --获取年初
    select trunc(to_date('2017-5-5','yyyy-MM-dd'),'year')from dual;
    select trunc(to_date('2016-5-5','yyyy-MM-dd'),'year')from dual;


    ---字符串函数***

    --将字符串转换为大写
    select upper(username) from t_user;
    select lower(username)from t_user;
    --拼接字符串
    select 'abc'||'def' from dual;
    select username||password from t_user;
    select concat(username,password)from t_user;
    --列的宽度、长度(列值的宽度)
    select length(username)from t_user;
    --填充
    --左填充 第一个参数目标参数,第二个参数 填充完之后的字符串长度
    --第三个参数 填充的数据
    --该例子是用字符b为字符a做填充
    select lpad('a',1,'b')from dual;
    select lpad('a',2,'b')from dual;
    select lpad('a',3,'b')from dual;

    select rpad('a',1,'b')from dual;
    select rpad('a',2,'b')from dual;
    select rpad('a',3,'b')from dual;
    select * from t_user;
    --去空
    --左去空
    select ltrim(username)from t_user;
    --右去空
    select rtrim(username)from t_user;
    --去前后空
    select trim(username)from t_user;

    --检索字符串(查询某字符串所在的索引位置) oracle中字符串索引从1开始
    select instr('abcdefg','c')from dual;
    select instr('abcdefg','cff')from dual;
    select instr('abcdefg','cde')from dual;

    --截取字符串
    --两个参数的时候 第一个参数表示目标字符串,第二个参数表示从索引位置开始截取到最后
    select substr('abcdefg',2) from dual;
    --三个参数的时候 第一个参数表示目标字符串,第二个参数表示从索引位置开始截取
    --第三个参数表示截取的长度
    select substr('abcdefg',2,5) from dual;

    --替换
    select replace('abcdefg','a','AAA')from dual;

     

  • 相关阅读:
    将数据写入Word模版,生成PDF并加水印
    JSPDF 中文乱码
    DataTable 计算列
    ZIP压缩类
    统一社会信用代码验证
    avalon SVG 画流程图
    横线
    验证身份证合法性
    Centos7.3安装Mysql8.0
    MVC全局验证登陆信息
  • 原文地址:https://www.cnblogs.com/huaweiming/p/9722069.html
Copyright © 2011-2022 走看看