需求:
        使用pl/sql写一段程序统计用户在线时间,精确到分,最好是秒。

解决方案 »

  1.   

    统计用户在线时间为什么用ORACLE额..在应用程序上统计不行么?
      

  2.   

    在做一小练习,并不实际应用。但是刚接触oracle,不知道具体的函数应用。
    我想应该用触发器,当用户登录的时候自动把系统时间存在一个表里,然后统计的时候与其相见就可以了。但是因为现在对oracle不熟悉,无法写出好的代码来。
      

  3.   


    --求在线时间其实就是求两个日期的差值,精确度不一样而已:
    --分别求相隔具体值:
    11:16:14 SQL> select extract(day from edt-sdt) day,
               2         extract(hour from edt-sdt) hour,
               3         extract(minute from edt-sdt) minute,
               4         extract(second from edt-sdt) second
               5  from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt,
               6               to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt
               7        from dual)
               8  /
     
           DAY       HOUR     MINUTE     SECOND
    ---------- ---------- ---------- ----------
             0          4          3         53
    --计算在线分钟:
    11:16:14 SQL> select day*24*60+hour*60+minute+second/60 minute from
               2  (select extract(day from edt-sdt) day,
               3         extract(hour from edt-sdt) hour,
               4         extract(minute from edt-sdt) minute,
               5         extract(second from edt-sdt) second
               6  from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt,
               7               to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt
               8        from dual))
               9  /
     
        MINUTE
    ----------
    243.883333
    --统计计算在线秒数:
    11:16:14 SQL> select day*24*60*60+hour*60*60+minute*60+second second from
               2  (select extract(day from edt-sdt) day,
               3         extract(hour from edt-sdt) hour,
               4         extract(minute from edt-sdt) minute,
               5         extract(second from edt-sdt) second
               6  from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt,
               7               to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt
               8        from dual))
               9  /
     
        SECOND
    ----------
         14633
      

  4.   

    楼主想要问的重点是什么? 如何通过ORACLE获取 登录、退出时间? 如何计算登录时长?如果只是个人研究,完全没必要执着于通过ORACLE获取用户登录、退出时间,这是应用做的事,实际业务中,没人这么要求。
    而计算登录时长,也只是一个表、一个计算公式,不存在什么难点。
      

  5.   

    我的描述好像很清楚了。实现的功能:统计用户在线时间
    约束:时间精确到秒
         使用pl/sql语言实现
    我真的挺想问您有没有认真的看一下我的问题,是不是太浮躁了那。