有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):
天:
ROUND(TO_NUMBER(END_DATE - START_DATE))
小时:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24)
分钟:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60)
秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(END_DATE - START_DATE) * 24 * 60 * 60 * 60) ......
一、 常用日期数据格式
1.Y或YY或YYY 年的最后一位,两位或三位
SQL> Select to_char(sysdate,'Y') from dual;
TO_CHAR(SYSDATE,'Y')
--------------------
7
SQL> Select to_char(sysdate,'YY') from dual;
TO_CHAR(SYSDATE,'YY')
---------------------
07
SQL> Select to_char(sysdate,'YYY') from dual;
TO_CHAR(SYSDATE,'YYY')
----------------------
007
2.Q 季度 1~3月为第一季度,2表示第二季度。
SQL> Select to_char(sysdate,'Q') from dual;
TO_CHAR(SYSDATE,'Q')
--------------------
2
3.MM 月份数
SQL> Select to_char(sysdate,'MM') from dual;
TO_CHAR(SYSDATE,'MM')
---------------------
05
4.RM 月份的罗马表示(V在罗马数字中表示 5)
SQL> Select to_char(sysdate,'RM') from dual;
TO_CHAR(SYSDATE,'RM')
---------------------
V
5.Month 用9个字符长度表示的月份名
SQL> Select to_char(sysdate,'Month') from dual;
TO_CHAR(SYSDATE,'MONTH')
------------------------
5月
6.WW 当年第几周(2007年5月29日为2007年第22周)
SQL> Select to_char(sysdate,'WW') from dual; ......
DECODE函数是ORACLE PL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢?先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录中的工资字段值? select salary into var-salary from employee,然后对变量var-salary用if-then-else或choose case之类的流控制语句进行判断。 如果用DECODE函数,那么我们就可以把这些流控制语句省略,通过SQL语句就可以直接完成。如下:select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2,salary from employee 是不是很简洁? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,...,else),表示如果value等于if1时,DECODE函数的结果返回then1,...,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。
decode()函数使用技巧
·软件环境:
1、Windows NT4.0+ORACLE 8.0.4
2、ORACLE安装路径为:C:\ORANT
·含义解释: ......
关键字: oracle数据库
Oracle数据库命令集
1、sqlplus启动方式:
Dos下运行sqlplus 用户名/密码 as sysdba
例如:c:>sqlplus sys/password AS sydba(系统帐户)
或者:c:>sqlplus scott/password
2、用户连接(切换)操作:
sql>conn Scott/password(默认为tiger)
注:conn与connect使用方法一样
3、手动解锁:
sql>ALTER USER scott Account Unlock;(将scott帐户解锁)
4、查看用户(两种方式):
sql>select user form dual;
sql>show user;
5、sql帮助:
sql>help index;
6、数据库卸载和加载
sql>shutdown [NORMAL][IMMEDLATE][ABORT][TRANSACTIONAL];
sql>startup;
7、查询select操作:
sql>select *from dept;
sql>select dname,loc from dept;
sql>select *from emp where deptno=20;
注:在sql中,字符串使用单引号。
8、字段别名的定义:
sql>select hiredate AS 雇用日期 from emp
AS可以省略,但是推荐使用。
9、字符串连接
sql>selcet dname||loc from dept;
10、提取表中的前N个记录:
sql>select *from emp where rownum<=N;
11、null的使用: ......
在oracle中当我们新建了多个数据库后,再次登录时,系统默认的是最后创建的那个数据库。
如何设置我们自己想要的默认数据库呢?
方法很简单,我们只需在运行窗口里输入regedit,即可进入注册表编辑器,在HKEY_LOCAL_MACHINEDE的software子键下的oracle下选中key_oradb10g_home1(我安装的是oracle10g),右侧便会出现很多数据项,选中名为ORACLE_SID的数据项,并右击选择修改,将名称改为你登录默认的数据库名称。
这样,当你再次登录时,就会登录进入你所想要的数据库。 ......
在 Oracle 中,对于已经建好的主键,是自动创建索引的,并且索引是创建到当前的表空间中的,如果要将索引更换到其它表空间,可以使用如下的方法,超简单:
alter index index_aaa rebuild tablespace newtablespace;
newtablespace 是新指定的表空间。 ......