介绍
日期函数
用于处理date类型的数据
默认情况下日期格式是dd-mon-yy既12-7月-78
(1)sysdate:该函数返回系统时间
示例:SQL> select sysdate from dual;
SYSDATE
--------------
16-5月 -12
(2)add_months(d,n)
(3)last_day(d):返回指定日期所在月份的最后一天
查找已经入职8个月多的员工
SQL> select * from empwhere sysdate>add_months(hiredate,8); 后面add_months(hiredate,8)是指雇佣时间加8
显示满10年服务年限的员工的姓名和受雇日期
SQL> select hiredateename from emp where sysdate>=add_months(hiredate,120);
对于每个员工,显示其加入公司的天数
SQL> selecttrunc(sysdate-hiredate) "入职天数",ename from emp;找出各月倒数第三天受雇的所有员工
找出各月倒数第三天受雇的所有员工
SQL> selecthiredate,ename from emp where last_day(hiredate)-2=hiredate;
转换函数
介绍
转换函数用于将函数类型从一种转为另外一种,在某些情况下,
oracle server
允许值的数据类型和实际的不一样,这时
oracle server
会隐含的转化数据类型
比如:
create table t1(id int);
insert into t1 values('10')--->这样oracle会自动的将'10'--->10
create table t2(id varchar2(10));
insert into t2 values(1);--->这样oracle就会自动的将1--->'1';
我们要说的是尽管oracle可以进行隐含的数据转换,但是它并不适应所有的情况,为了提高程序的可靠性,我们应该使用、转换函数进行转换。
to_char
你可以使用select ename,hiredate,sal from emp wheredeptno=10;显示信息,可是在某些情况下,这个并不能满足你的要求
日期是否可以显示/时/分/秒
SQL> select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
不过这样显示的一般时分秒都为零,要在插入时也用这个格式的才行
SQL> select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
薪水是否可以显示指定的货币符号
SQL> select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss'),to_char(sal,'L99999.99')fromemp;
ENAME TO_CHAR(HIREDATE,'Y TO_CHAR(SAL,'L99999
---------- ------------------- -------------------
sqy 1988-05-20 00:00:00 ¥6000.00
shen 1988-05-20 00:00:00 ¥6000.00
test 2012-05-16 11:46:43 ¥23.00
to_char
(sal,'L99999.99')这里L是本地货币符号,根据你系统符号来确定,99999.99是因为这边sal类型为5位数字两位小数。
yy:两位数的年份 2004--->04 9:显示数字,并忽略前面0
yyyy:四位数的年份 2004年 0:显示数字,如位数不足,则用零补齐
mm:两位数的月份 8月--->08 .:在指定位置显示小数点
dd:两位数的天30号--->30 ,:在指定位置显示逗号
hh24:8点--->20 $:在数字前加美元
hh12:8点--->08 L:在数字前加本地货币符号
mi、ss--->显示分钟/秒 C:在数字前加国际货币符号
G:在指定位置显示组分隔符
D:在指定位置显示小数点符号(.)
显示1980年入职的所有员工
SQL> select * from emp where to_char(hiredate,'yyyy')=1980;
显示所有12月份入职的员工
SQL> select * from emp where to_char(hiredate,'mm')=12;
sys_context
1)terminal:当前会话客户所对应的终端的标识符
2)lanuage:语音
3)db_name:当前数据库名称
4)nls_date_fromat:当前会话客户所对应的日期格式
5)session_user:当前会话客户所对应的数据库用户名
6)current_schema:当前会话客户端所对应的默认方案名
7)host:返回数据库所在的主机名称
通过函数,可以查询一些重要信息,比如你怎么在使用数据库?
示例1:
SQL> select sys_context('
userenv
','db_name')from dual;
SYS_CONTEXT('USERENV','DB_NAME')
--------------------------------------------------------------------------------
orac
示例2:
SQL> select sys_context('userenv','language') from dual;
SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBKl
其中userenv是固定不变的