我记得使用golden32查询可以得知其执行时间,你试试吧。
好像是到了0.xx秒

解决方案 »

  1.   

    select to_char(sysdate,'YYYY-MM-DD HH:MI:ssss') from dual 2003-03-14 09:54:4141 取的时间精确到了百分之一。
      

  2.   

    dbms_utility.get_time,返回自本次数据库服务器上操作系统启动后逝去的百分之一秒数
      

  3.   

    pumawang(快乐小林):to_char(sysdate,'YYYY-MM-DD HH:MI:ssss')
    这样做没有丝毫意义,只是一个假象而已
    你可以载后面写2n个s,但只是ss的重复而已
      

  4.   

    pumawang's advice is useful
      

  5.   

    如果是8i以前,没有办法
    如果你是8i,写一个下的java过程即可,很简单,就象你自己的函数一样
    如果是9i,就可以直接得到毫秒
      

  6.   

    在sql plus 中set timing on再执行查询不就可以了吗
    我记得显示很精确的,不知道满足要求嘛
      

  7.   

    同意西域浪子的看法。Golden32是个很好用、很有用的工具!没有用过的朋友不妨一试!
      

  8.   

    to  penitent(只取一瓢):
    数据库版本是8i,应该怎样写那一个java过程?
    能不能再顺便说说在9i中的做法?
    谢谢!to pumawang(快乐小林):
    我试了你的方法,很好用 :)
      

  9.   

    8i中的date只精确到了秒,所以在数据库中,你是得不到毫秒信息的。
    在9i中,增加了TIMESTAMP类型,可取得毫秒信息。to_char(sysdate,'YYYY-MM-DD HH:MI:ssss')
    这里的'ssss'指的是从午夜0点开始,到现在所经历的秒数,不是毫秒信息。
      

  10.   

    junerr(路在何方) :
        我在 cmd 中连接 Oracle 的。 'ssss' 只能得到 象'1414','5151' 那样的数字, 确实不是真正的毫秒.不过 'sssss' 奇数个s 后就是 0 点后过去秒数的.
      

  11.   

    declare
      cur_time timestamp;
    begin
      cur_time:=current_timestamp;
      dbms_output.put_line(to_char(cur_time));
    end;
      

  12.   

    9i下大家都知道怎么做了吧
    8i下:
    select * from v$timer;
    试试看
      

  13.   

    v$timer记录的是流失的1/100秒。可以用于统计时间差
    但是要1/1000秒,还是用java函数好。
    我现在忙,晚上给你一个例子。用java函数取得1/1000秒。
    注意的是,你的数据库必须支持java(8i以上,并保证是企业或个人版,保证安装了java引擎)
      

  14.   

    SQL>create or replace and compile 
    java source
    named "MyTimestamp"
    as
    import java.lang.String;
    import java.sql.Timestamp;public class MyTimestamp
    {
    public static String getTimestamp()
       {
         return(new Timestamp(System.currentTimeMillis())).toString();
       }
    };SQL>java created.
    注:注意java的语法,注意大小写SQL>create or replace function my_timestamp return varchar2
    as language java
    name 'MyTimestamp.getTimestamp() return java.lang.String';
    /SQL>function created.SQL>select my_timestamp,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') ORACLE_TIME from dual;MY_TIMESTAMP             ORACLE_TIME
    ------------------------ -------------------
    2003-03-17 19:15:59.688  2003-03-17 19:15:59
      

  15.   

    谢谢各位的解答,真令人打开眼界。
    在结贴之前总结一下:
    要计算时间精确到1/100秒,在8i以前没有办法
    在8i或更高版本中可以用dbms_utility.get_time,或select * from v$timer;
    在9i中要得到精确到毫秒的时间直接用“TimeStamp”类型变量:
    declare
      cur_time timestamp;
    begin
      cur_time:=current_timestamp;
      dbms_output.put_line(to_char(cur_time));
    end;
    如果只有8i版本,就要按penitent(只取一瓢) 的方法自己建立一个java过程先。