sql函数的使用-日期函数(11)

来源:互联网 发布:linux grub2 修复 编辑:程序博客网 时间:2024/06/07 00:19

介绍
日期函数用于处理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是固定不变的

0 0
原创粉丝点击