您现在的位置是:首页
>
清分日期当天还可以处理吗 在Oracle中实现各种日期处理完全版
在Oracle中实现各种日期处理完全版 TO_DATE格式 Day: dd um er dy a reviated fri day

在Oracle中实现各种日期处理完全版
TO_DATE格式 Day: dd number dy abbreviated fri day spelled out friday ddspth spelled out ordinal elfth Month: mm number mon abbreviated mar month spelled out march Year: yy o digits yyyy four digits 小时格式下时间范围为 : : : : 小时格式下时间范围为 : : : : 日期和字符转换函数用法(to_date to_char) select to_char( to_date( J ) Jsp ) from dual 显示Two Hundred Twenty Two 求某天是星期几 select to_char(to_date( yyyy mm dd ) day ) from dual; 星期一 select to_char(to_date( yyyy mm dd ) day NLS_DATE_LANGUAGE = American ) from dual; monday 设置日期语言 ALTER SESSION SET NLS_DATE_LANGUAGE= AMERICAN ; 也可以这样 TO_DATE ( YYYY mm dd NLS_DATE_LANGUAGE = American ) 两个日期间的天数 select floor(sysdate to_date( yyyymmdd )) from dual; 时间为null的用法 select id active_date from table UNION select TO_DATE(null) from dual; 注意要用TO_DATE(null) a_date beeen to_date( yyyymmdd ) and to_date( yyyymmdd ) 那么 月 号中午 点之后和 月 号的 点之前是不包含在这个范围之内的 所以 当时间需要精确的时候 觉得to_char还是必要的 日期格式冲突问题 输入的格式要看你安装的ORACLE字符集的类型 比如: US ASCII date格式的类型就是: Jan alter system set NLS_DATE_LANGUAGE = American alter session set NLS_DATE_LANGUAGE = American 或者在to_date中写 select to_char(to_date( 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 SQL> set linesize SQL> select * from nls_session_parameters; NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD MON RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH MI SSXFF AM NLS_TIMESTAMP_FORMAT DD MON RR HH MI SSXFF AM NLS_TIME_TZ_FORMAT HH MI SSXFF AM TZH:TZM NLS_TIMESTAMP_TZ_FORMAT DD MON RR HH MI SSXFF AM TZH:TZM NLS_DUAL_CURRENCY $ NLS_P BINARY rows selected specify it in SQL statement: SQL> select to_date( SEP DD MON YYYY ) from dual; SEP SQL> alter session set nls_date_format = MM DD YYYY ; Session altered SQL> select to_date( SEP DD MON YY ) from dual; TO_DATE( SQL> alter session set nls_date_format = RRRR MM DD ; Session altered SQL> select to_date( SEP DD MON YYYY ) from dual; TO_DATE( When we use TO_CHAR function we get expected results of format from current SQL statement: SQL> alter session set nls_date_format = MM DD YY ; Session altered SQL> select to_char(sysdate dd mm yyyy ) from dual; TO_CHAR(SYSDATE DD MM YYYY ) SQL> alter session set nls_date_format = RR MON DD ; Session altered SQL> select to_char(sysdate dd mon yy ) from dual; TO_CHAR(SYSDATE DD MON YY ) sep SQL> select to_char(sysdate dd Mon yy ) from dual; TO_CHAR(SYSDATE DD MON YY ) Sep select count(*) from ( select rownum rnum from all_objects where rownum <= to_date( yyyy mm dd ) to_date( yyyy mm dd )+ ) where to_char( to_date( yyyy mm dd )+rnum D ) not in ( ) 查找 至 间除星期一和七的天数 在前后分别调用DBMS_UTILITY GET_TIME 让后将结果相减(得到的是 / 秒 而不是毫秒) select months_beeen(to_date( MM DD YYYY ) to_date( MM DD YYYY )) MONTHS FROM DUAL; select months_beeen(to_date( MM DD YYYY ) to_date( MM DD YYYY )) MONTHS FROM DUAL; Next_day的用法 Next_day(date day) Monday Sunday for format code DAY Mon Sun for format code DY for format code D select to_char(sysdate hh:mi:ss ) TIME from all_objects 注意 第一条记录的TIME 与最后一行是一样的 可以建立一个函数来处理这个问题 create or replace function sys_date return date is begin return sysdate; end; select to_char(sys_date hh:mi:ss ) from all_objects; 获得小时数 SELECT EXTRACT(HOUR FROM TIMESTAMP : : ) from offer SQL> select sysdate to_char(sysdate hh ) from dual; SYSDATE TO_CHAR(SYSDATE HH ) : : SQL> select sysdate to_char(sysdate hh ) from dual; SYSDATE TO_CHAR(SYSDATE HH ) : : 获取年月日与此类似 年月日的处理 select older_date newer_date years months abs( trunc( newer_date add_months( older_date years* +months ) ) ) days from ( select trunc(months_beeen( newer_date older_date )/ ) YEARS mod(tr lishixinzhi/Article/program/Oracle/201311/17738 很赞哦! (1061)