龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 数据库类 > Oracle 技术 >

在Oracle时间应用中如何转换函数

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
本文主要介绍的是 Oracle 时间的实际应用中的转换函数和date实际操作的相关关系,我们都知道转换函数和date实际操作的相关关系最大的就是两个可以转换函数即,to_date(),to_char() to_dat

本文主要介绍的是Oracle时间的实际应用中的转换函数和date实际操作的相关关系,我们都知道转换函数和date实际操作的相关关系最大的就是两个可以转换函数即,to_date(),to_char()

to_date() 作用将字符类型按一定格式转化为日期类型。

具体用法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者为字符串,后者为转换日期格式,注意,前后两者要以一对应。

如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 将得到具体的Oracle时间

多种日期格式:

YYYY:四位表示的年份

YYY,YY,Y:年份的最后三位、两位或一位,缺省为当前世纪

MM:01~12的月份编号

MONTH:九个字符表示的月份,右边用空格填补

MON:三位字符的月份缩写

WW:一年中的星期

D:星期中的第几天

DD:月份中的第几天

DDD:年所中的第几天

DAY:九个字符表示的天的全称,右边用空格补齐

HH,HH12:一天中的第几个小时,12进制表示法

HH24:一天中的第几个小时,取值为00~23

MI:一小时中的分钟

SS:一分钟中的秒

SSSS:从午夜开始过去的秒数

to_char():将日期转按一定格式换成字符类型

  1. SQL> select to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'') time from dual;  
  2. TIME  
  3. 2004-10-08 15:22:58 

即把当前Oracle时间按yyyy-mm-dd hh24:mi:ss格式转换成字符类型

在oracle中处理日期大全

TO_DATE格式

  1. Day:   
  2. dd number 12   
  3. dy abbreviated fri   
  4. day spelled out friday   
  5. ddspth spelled out, ordinal twelfth   
  6. Month:   
  7. mm number 03   
  8. mon abbreviated mar   
  9. month spelled out march   
  10. Year:   
  11. yy two digits 98   
  12. yyyy four digits 1998 

24小时格式下时间范围为: 0:00:00 - 23:59:59....

12小时格式下Oracle时间范围为: 1:00:00 - 12:59:59 ....

[ZT]日期和??函???

1.

日期和字符转换函数用法(to_date,to_char)

2.

  1. select to_char( to_date(222,''J''),''Jsp'') from dual 

显示Two Hundred Twenty-Two

3.

求某天是星期几

  1. select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),''day'') from dual;  

星期一

  1. select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
    ''day'',''
    NLS_DATE_LANGUAGE = American'') from dual;   
  2. monday  

设置日期语言

  1. ALTER SESSION SET NLS_DATE_LANGUAGE=''AMERICAN'';  

也可以这样

  1. TO_DATE (''2002-08-26'', ''YYYY-mm-dd'', ''NLS_DATE_LANGUAGE = American''

4.

两个日期间的天数

  1. select floor(sysdate - to_date(''20020405'',''yyyymmdd'')) from dual; 

5. 时间为null的用法

  1. select id, active_date from table1   
  2. UNION   
  3. select 1, TO_DATE(null) from dual; 

注意要用TO_DATE(null)

6.

  1. a_date between to_date(''20011201'',''yyyymmdd'') 
  2. and to_date(''20011231'',''yyyymmdd'')  

那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的。

所以,当时间需要精确的时候,觉得to_char还是必要的

7. 日期格式冲突问题

输入的格式要看你安装的ORACLE字符集的类型, 比如: US7ASCII, date格式的类型就是: ''01-Jan-01''

  1. alter system set NLS_DATE_LANGUAGE = American   
  2. alter session set NLS_DATE_LANGUAGE = American  

或者在to_date中写

  1. select to_char(to_date(''2002-08-26'',''yyyy-mm-dd''),
    ''day'',''
    NLS_DATE_LANGUAGE = American'') from dual;  

注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多,

可查看

q查找2002-02-28至2002-02-01间除星期一和七的天数

在前后分别调用DBMS_UTILITY.GET_TIME, 让后将结果相减(得到的是1/100秒, 而不是毫秒).

9.

  1. select months_between(to_date(''01-31-1999'',''MM-DD-YYYY''),   
  2. to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;   
  3. 1  
  4. select months_between(to_date(''02-01-1999'',''MM-DD-YYYY''),   
  5. to_date(''12-31-1998'',''MM-DD-YYYY'')) "MONTHS" FROM DUAL;  
  6. 1.03225806451613   
  7.  

10. Next_day的用法

  1. Next_day(date, day)  
  2. Monday-Sunday, for format code DAY   
  3. Mon-Sun, for format code DY   
  4. 1-7, for format code D  

以上的相关内容就是对Oracle时间的介绍,望你能有所收获。 

文章出自: http://www.programbbs.com/doc/class10-3.htm

精彩图集

赞助商链接