《oracle的todate函数》由会员分享,可在线阅读,更多相关《oracle的todate函数(10页珍藏版)》请在金锄头文库上搜索。
1、Oracle的to_date函数日期格式参数 含义说明D 一周中的星期几DAY 天的名字,使用空格填充到9个字符DD 月中的第几天 DDD 年中的第几天DY 天的简写名IW ISO标准的年中的第几周IYYY ISO标准的四位年份YYYY 四位年份YYY,YY,Y 年份的最后三位,两位,一位HH 小时,按12小时计HH24 小时,按24小时计 MI 分 SS 秒 MM 月 Mon 月份的简写 注:在不同的语言下显示出来的数据不同,在中文下显示为5月,在英文下显示为MAYMonth 月份的全名 W 该月的第几个星期WW 年中的第几个星期1.日期时间间隔操作 当前时间减去7分钟的时间select s
2、ysdate,sysdate - interval 7 MINUTE from dual当前时间减去7小时的时间select sysdate - interval 7 hour from dual 当前时间减去7天的时间 select sysdate - interval 7 day from dual当前时间减去7月的时间 select sysdate,sysdate - interval 7 month from dual当前时间减去7年的时间select sysdate,sysdate - interval 7 year from dual时间间隔乘以一个数字 select sysdat
3、e,sysdate - 8 *interval 2 hour from dual2.日期到字符操作select sysdate,to_char(sysdate,yyyy-mm-dd hh24:mi:ss) from dual select sysdate,to_char(sysdate,yyyy-mm-dd hh:mi:ss) from dual select sysdate,to_char(sysdate,yyyy-ddd hh:mi:ss) from dualselect sysdate,to_char(sysdate,yyyy-mm iw-d hh:mi:ss) from dual 参考
4、oracle的相关关文档(ORACLE901DOC/SERVER.901/A90125/SQL_ELEMENTS4.HTM#48515) 3. 字符到日期操作 select to_date(2003-10-17 21:15:37,yyyy-mm-dd hh24:mi:ss) from dual 具体用法和上面的to_char差不多。4. trunk/ ROUND函数的使用select trunc(sysdate ,YEAR) from dualselect trunc(sysdate ) from dualselect to_char(trunc(sysdate ,YYYY),YYYY) fr
5、om dual5.oracle有毫秒级的数据类型-返回当前时间 年月日小时分秒毫秒select to_char(current_timestamp(5),DD-MON-YYYY HH24:MI:SSxFF) from dual;-返回当前 时间的秒毫秒,可以指定秒后面的精度(最大=9) select to_char(current_timestamp(9),MI:SSxFF) from dual;6.计算程序运行的时间(ms)declaretype rc is ref cursor; l_rc rc;l_dummy all_objects.object_name%type; l_start n
6、umber default dbms_utility.get_time;beginfor I in 1 . 1000loopopen l_rc for select object_name from all_objects | where object_id = | i; fetch l_rc into l_dummy; close l_rc;end loop; dbms_output.put_line( round( (dbms_utility.get_time-l_start)/100, 2 ) | seconds. );end;= 1.日期和字符转换函数用法(to_date,to_cha
7、r)2.select to_char( to_date(222,J),Jsp) from dual (这个经典.)显示Two Hundred Twenty-Two3.求某天是星期几 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=AM
8、ERICAN;也可以这样 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
9、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-
10、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 8. select count(*) from ( select rownum-1 rnum from all_objects where rownum select sysdate ,to_char(sysdate,hh) from dual; SYSDATE TO_CHAR(SYSDATE,HH) - - 2003-10-13 19:35:21 07 SQL select sysdate ,to_char(sysdate,hh24) from dual; SYSDATE TO_CHAR(SYSDATE,HH24) - - 2003-10-13 19:35:21 19 获取年月日与此类似13.年月