您的位置:首页 > 理论基础 > 计算机网络

Oracel DUAL 表的日常使用(http://blog.sina.com.cn/s/blog_53aed4430100axiv.html),更新session日期格式

2009-05-07 16:24 561 查看
1.DUAL介绍

确实DUAL的使用很方便. 但是大家知道DUAL倒底是什么OBJECT, 它有什么特殊的行为吗? 来

,我们一起看一看. 
首先搞清楚DUAL是什么OBJECT : 
 SQL> connect system/manager 
    Connected. 
 SQL> select owner, object_name , object_type from dba_objects where object_name

like ‘%DUAL%’; 
  OWNER OBJECT_NAME OBJECT_TYPE 
  ————— ————— ————- 
  SYS DUAL TABLE 
  PUBLIC DUAL SYNONYM 
  原来DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用

. 
  再看看它的结构: 
  SQL> desc dual 
  Name Null? Type 
  —————————————– ——– —————————- 
  DUMMY VARCHAR2(1) 

  只有一个名字叫DUMMY的字符型COLUMN . 
  然后查询一下表里的数据: 
  SQL> select dummy from dual; 
  DUMMY 
  ———----------------------- 
  X 
  哦, 只有一条记录, DUMMY的值是’X’ .很正常啊,没什么奇怪嘛.
=======================================================================
select object_name ,object_type from dba_objects where object_name ='DUAL'

DUAL是 SYS用户的一个TABLE,它只有一个 DUMMY Field.

1.查找当天日期select sysdate from dual

2.查找当前日期的当月第一天select trunc(sysdate,'month') from dual

3.查找当前日期的当月最后一天select trunc(last_day(sysdate)) from dual

4.当前系统日期select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual

5.当前主机名select SYS_CONTEXT('USERENV','TERMINAL') from dual

6.当前的locale :select SYS_CONTEXT('USERENV','language') from dual

7.随机数:select dbms_random.random from dual

8.当前用户select dbms_random.random from dual

9.查看当前用户,可以在 SQL Plus中执行下面语句
select user from dual;

10.用来调用系统函数
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--获得当前系统时间

select SYS_CONTEXT('USERENV','TERMINAL') from dual;--获得主机名

select SYS_CONTEXT('USERENV','language') from dual;--获得当前locale

select dbms_random.random from dual;--获得一个随机数

11.得到序列的下一个值或当前值,用下面语句
select your_sequence.nextval from dual;--获得序列your_sequence的下一个值

select your_sequence.currval from dual;--获得序列your_sequence的当前值

12.可以用做计算器
select 7*9 from dual;

DUAL是Oracle与数据字典一起自动创建的一个表,它只有一列:DUMMY,其数据类型为:

VARCHAR2(1)。

DUAL中只有一行数据:'X'。

DUAL属于SYS模式,但所有用户都可以使用DUAL名称访问它。用SELECT计算常量表达式、伪列等

值时常用该表,因为它只返回一行数据,而使用其它表时可能返回多个数据行。

附加:修改oracle输出的日期格式

内容如下:
1、oracle支持对日期进行运算
2、日期运算时是以天为单位进行的
3、当需要以分秒等更小的单位算值时,按时间进制进行转换即可
4、进行时间进制转换时注意加括号,否则会出问题

SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';

会话已更改。

SQL> set serverout on
SQL> declare
2 DateValue date;
3 begin
4 select sysdate into DateValue from dual;
5 dbms_output.put_line('源时间:'||to_char(DateValue));
6 dbms_output.put_line('源时间减1天:'||to_char(DateValue-1));
7 dbms_output.put_line('源时间减1天1小时:'||to_char(DateValue-1-1/24));
8 dbms_output.put_line('源时间减1天1小时1分:'||to_char(DateValue-1-1/24-1/(24*60)));
9 dbms_output.put_line('源时间减1天1小时1分1秒:'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*60)));
10 end;
11 /
源时间:2003-12-29 11:53:41
源时间减1天:2003-12-28 11:53:41
源时间减1天1小时:2003-12-28 10:53:41
源时间减1天1小时1分:2003-12-28 10:52:41
源时间减1天1小时1分1秒:2003-12-28 10:52:40
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐