

数学函数,日期函数sysdate,add_months,last_day,用to_char转换日期为带时分秒的,数字加货币符号与分段,日期中取年,取月,取日,返回正在使用的数据名,语言,用户,方案
一、sql数学函数,返回绝对值,反余旋,反正旋,等
abs(n)返回绝对值,例:select abs(-13) from dual;
其它略。。。。。。。。。。。。。。。
*二、日期函数,默认日期格式dd-mon-yy
1.sysdate:返回当前系统时间,例:select sysdate from dual;
例2:查入一条带时分秒的数据到emp表,insert into emp values(8881,'test','MANAGER',7782,sysdate,23,23,10); //sysdate为当前时间,是有时分秒的
2.add_months(d,n),加月份的一个函数,给一个日期d加上n个月份
例1:查找入职8个月多的员工,select * from emp where sysdate>add_months(hiredate,8); //当前系统日期大于员工雇用时间+8个月时间
例2:显示满十年员工姓名和雇用日期,select ename,hiredate from emp where sysdate>add_months(hiredate,12*10);
例3:显示所有员工加入公司的天数,select trunc(sysdate-hiredate) 入职天数,ename from emp;
3.last_day(d)反回指定日期所在月的最后一天
找出各月倒数第3天受雇的所有员工:select hiredate,ename from emp where last_day(hriedate)-2=hiredate;
三、转换字符类型的函数to_char
oracle默认会隐形转换,当录入字符与字段类型不匹配但可以转为数据库字段类型时会自动转换,如数字可转为字符。所以有不用单引号录入数字到字符型字段也可以成功
但有些情况还是要用转换函数,比如将没有时分秒的日期转为有时分秒的
1.用to_char给日期加入时分秒或,12/24小时制
例1:使查询出来的hiredate日期转为带时分秒的24小时制格式
select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),sal from emp; //hh24为24小时制,hh12为12小时制,mi为分,ss为秒
2.给数字加上特定的格式,比如货币符号,用逗号给数字分段,
1)在数字加本地货币符号
例3:使查询出来的hiredate日期转为带时分秒的24小时制格式,工资转为L99999.99格式
select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99999.99')sal from emp;
//L代表本地货币符号,若oracle为中文版就中国的货币符号,是英文版就是英磅的货币符号
//99999.99,代表该字段有5位整数,2位小数,表明这个字段的字符类型为number(7,2),7表总的数字个数,2表有2位小数
2)在数字加其它货币符号,用逗号给数字分段
select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'$99,999.99'),sal from emp; //加逗号,给货币分段,加货币符号$等,也可以是其它符号
3.用to_char从日期中取年,月,日
用to_char从日期获取年:select ename,to_char(hiredate,'yyyy'),to_char(sal,'$99,999.99')sal from emp; //取年
用to_char从日期获取日:select ename,to_char(hiredate,'mm'),to_char(sal,'$99,999.99')sal from emp; //取月
用to_char从日期获取日:select ename,to_char(hiredate,'dd'),to_char(sal,'$99,999.99')sal from emp; //取天
例:显示1980年入职的所有员工
select * from emp where to_char(hiredate,'yyyy')=1980; //显示1980年入职的
例2:显示12月入职的所有员工
select * from emp where to_char(hiredate,'mm)=12; //显示12月份入职的
四、用sys_context函数返回一些系统信息
系统函数,通过该函数查询一些系统的重要信息
select sys_context('userenv','db_name') from dual; //返回正在使用的的数据库
select sys_context('userenv','language') from dual; //返回正在使用的语言
select sys_context('userenv','session_user') from dual; //返回正在使用的用户
select sys_context('userenv','current_schema') from dual; //返回正使用的方案,用户名和方案名一样
五、方案和用户的关系
方案和用户名称一样,创建用户后,oracle会自动创建一个方案,以方案来来组织数据对象,管理数据库。
方案包括各种数据对象,比如表,视图,触发器,存储过程