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
确实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
相关文章推荐
- cookie与session(上) 转载 原文链接http://blog.sina.com.cn/s/blog_4745d1c10100ihnq.html
- 使用BenchmarkSQL测试PostgreSQL(http://blog.sina.com.cn/s/blog_448574810101a276.html)
- VMware下Ubuntu使用NAT共享主机IP上网方式的设置参考(cp:http://blog.sina.com.cn/s/blog_9a982d8801012njl.html)
- LayoutInflater作用及使用 http://blog.sina.com.cn/s/blog_629b701e0100rg4d.html
- cookie与session(再比较) 转载 原文链接http://blog.sina.com.cn/s/blog_4745d1c10100ihnq.html
- 转载自http://blog.sina.com.cn/s/blog_551dd6690100nfk4.html,在Web.Config文件中使用configSource
- bed文件格式(转自http://blog.sina.com.cn/s/blog_70b2b6020100liou.html)
- solrJ的使用--覆盖创建索引,查询,删除索引【转自http://blog.sina.com.cn/s/blog_64ac3ab10100t3mq.html】
- ESRI—shapefile的几种常见文件格式 http://blog.sina.com.cn/s/blog_631f9e4b0100g1k0.html
- LoadXML的正确使用(原文:http://blog.sina.com.cn/s/blog_68530d690100mlcp.html)
- UIAlertView的使用 via: http://blog.sina.com.cn/s/blog_5aeb9f7b0101flpj.html
- iOS UIAppearance使用详解(来自http://blog.sina.com.cn/s/blog_9693f61a0101f1rs.html)
- C++map的基本操作和使用 http://blog.sina.com.cn/s/blog_65ed0e8a01010yd3.html
- waitpid系统调用在Linux函数库中的原型是:http://blog.sina.com.cn/s/blog_602a39250100xfxx.html
- http://blog.sina.com.cn/s/blog_61d8dfdb0100fti3.html
- 程序员发展应该尽早明白13个道理(原地址http://blog.sina.com.cn/s/blog_a752817501014lu7.html)
- http://blog.sina.com.cn/s/blog_5bd6b4510101585x.html
- 用Eclipse CDT 配置C/C++ 编译环境(转自http://blog.sina.com.cn/s/blog_45dbe005010009jf.html)
- http://blog.sina.com.cn/s/blog_493a84550102wq50.html
- http://blog.sina.com.cn/s/blog_1525b95370102wg59.html