您的位置:首页 > 数据库 > Oracle

在Oracle中实现各种日期处理完全版

2007-06-04 10:12 363 查看
    Day:   

    dd    number     12

    dy    abbreviated  fri     

    day   spelled out  friday            

    ddspth  spelled out,  ordinal  twelfth

    Month:  

    mm    number     03

    mon   abbreviated  mar

    month  spelled out  march 

    Year:             

    yy    two digits  98

    yyyy   four digits  1998  

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

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

  1.

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

  2.

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

    显示Two Hundred Twenty-Two

  3.

    求某天是星期几

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

    星期一

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

    monday  

    设置日期语言

    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN';

    也可以这样

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

  4.

    两个日期间的天数

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

  5.   时间为null的用法

    select id, active_date from table1

     UNION

    select 1, TO_DATE(null) from dual;

    注意要用TO_DATE(null)

  6. 

    a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd')

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

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

  7.   日期格式冲突问题

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

    alter system set NLS_DATE_LANGUAGE = American

       alter session set NLS_DATE_LANGUAGE = American

    或者在to_date中写

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

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

    可查看

    select * from nls_session_parameters

    select * from V$NLS_PARAMETERS

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

       We overwrite NLS_DATE_FORMAT into different formats for the session. 

       SQL> alter session set nls_date_format = 'DD-MON-RR'; Session altered.

       SQL> set pagesize 0

     SQL> set linesize 130

     SQL> select * from nls_session_parameters;

     NLS_LANGUAGE          AMERICAN

     NLS_TERRITORY         AMERICA

     NLS_CURRENCY          $

     NLS_ISO_CURRENCY        AMERICA

     NLS_NUMERIC_CHARACTERS      
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息