love1

-----------------------------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;


---其他函数

 

分类:

技术点:

相关文章: